📗 BOOK/스프링 입문을 위한 자바 객체 지향의 원리와 이해

06 스프링이 사랑한 디자인 패턴

미미누 2022. 4. 8. 21:18

어댑터 패턴(Adapter Pattern)

서로 다른 두 인터페이스 사이에 통신이 가능하도록 하는 것

스프링의 예시) JDBC/ODBC, 자바의 플랫폼별 JRE

 

어댑터 패턴은 합성 즉, 객체를 속성으로 만들어서 참조하는 디자인 패턴으로, 

호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴

 

프록시 패턴(Proxy Pattern)

프록시 패턴의 경우 실제 서비스 객체가 가진 메서드와 같은 이름의 메서드를 사용하는데, 이를 위해 인터페이스를 사용한다. 인터페이스를 사용하면 서비스 객체가 들어갈 자리에 대리자 객체를 대신 투입하는 방식

 

대리자는 실제 서비스와 같은 이름의 메서드를 구현한다. 이때 인터페이스 사용

대리자는 실제 서비스에 대한 참조 변수를 갖는다. 

대리자는 실제 서비스의 메서드 호출 전후에 별도의 로직을 수행할 수 있다(AOP 개념)

 

프록시 패턴은 개방 폐쇄 원칙(OCP), 의존 역전 원칙(DIP)이 적용된 패턴

 

데코레이터 패턴(Decorator Pattern)

프록시 패턴에 클라이언트가 받는 반환값에 장식을 덧입히는 방식

데코레이터 패턴 또한 OCP, DIP가 적용된 패턴

 

싱글턴 패턴(Singleton Pattern)

싱글턴 패턴은 인스턴스를 하나만 만들어 사용하기 위한 패턴

 

다음 세가지가 필요함

1. new를 실행할 수 없도록 생성자에 private 접근 제어자를 지정한다.

2. 단일 객체를 반환하는 정적 메서드가 필요하다.

3. 단일 객체를 참조할 정적 참조 변수가 필요하다.

 

싱글턴 특징

1. private 생성자를 갖는다.

2. 단일 객체 참조 변수를 정적 속성으로 갖는다.

3. 단일 객체 참조 변수가 참조하는 단일 객체를 반환하는 getInstance() 정적 메서드를 갖는다.

4. 단일 속성은 쓰기 가능한 속성을 가지지 않는다.

 

템플릿 메서드 패턴(Template Method Pattern)

상위 클래스에 공통 로직을 수행하는 템플릿 메서드와 하위 클래스에 오버 라이딩을 강제하는 추상 메서드 또는

선택적으로 오버라이딩 할 수 있는 훅(Hook) 메서드를 두는 패턴