디자인 패턴
생성 패턴
구조 패턴
행동 패턴
싱글톤 패턴
→ 싱글톤 패턴은 인스턴스를 중복해서 생성하지 않는 패턴입니다.
스프링 컨테이너에서 객체 관리시 싱글톤 패턴을 사용하고 있고, DB커넥션풀이나, 스레드풀 객체를 관리할 때에도 싱글톤 패턴을 사용합니다. 세부적인 방법으로는 이른초기화 방식, 게으른 초기화방식, 그리고 홀더에 의한 초기화 방식이 있습니다.
팩토리 메소드 패턴
→ 인스턴스를 직접 생성하지 않고 인스턴스를 생성하는 Factory객체를 사용하는 패턴입니다. 직접 인스턴스를 생성, 관리하지 않기 때문에 결합도를 낮추는 효과가 있습니다.
대표적으로 스프링 Dependency Injection시 메타데이터 설정을 통해 스프링 컨테이너가 인스턴스를 생성하게 됩니다.
어댑터 패턴
→ 어댑터 패턴은 어댑터를 사용해서 호환되지 않는 인터페이스를 호환하도록 하는 패턴입니다. 향후 인터페이스가 바뀌더라도 변경된 내용이 어댑터 안에 캡슐화 되므로 수정할 필요가 없습니다.
템플릿 메소드 패턴
→ 템플릿 메소드 패턴은 상속을 통해서 부모 클래스의 기능을 확장할 때 사용하는 방법입니다. 부모 클래스에서 변하지 않는 기능을 구현해 두고, 자식 ㅋ르래스에서 확장할 기능을 구현하게 됩니다. 자바에서는 추상클래스를 활용하여 템플릿 메소드 패턴을 표현하게 되는데요. 대표적으로 AbstractMap이 있습니다. ApstractMap은 AbstractMap에서 공통된 기능을 정의하고, 상속받은 HashMap이나 TreeMap에서 각각의 자료구조에 맞게 get()메소드를 다르게 구현하게 됩니다.
디자인 패턴
싱글톤 패턴
Factory Method Pattern
탬플릿 메소드 패턴
어댑터 패턴
Template Method Pattern
Observer Pattern
Strategy Pattern
State Pattern