목차
1. 어댑터 패턴
•
정의: 호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴
◦
즉, 객체를 속성으로 만들어서 참조하는 패턴
2. 프록시 패턴
•
정의: 제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴
•
특징
◦
대리자는 실제 서비스와 같은 이름의 메서드를 구현함. 이때 인터페이스를 사용함.
◦
대리자는 실제 서비스에 대한 참조 변수를 가짐(합성).
◦
대리자는 실제 서비스의 같은 이름을 가진 메서드를 호출하고 그 값을 클라에게 돌려줌.
◦
대리자는 실제 서비스의 메서드 호출 전후에 별도의 로직을 수행할 수 있음.
3. 데코레이션 패턴
•
정의: 메서드 호출의 반환값에 변화를 주기 위해 중간에 장식자를 두는 패턴
•
특징
◦
장식자는 실제 서비스와 같은 이름의 메서드를 구현함. 이때 인터페이스를 사용함.
◦
장식자는 실제 서비스에 대한 참조 변수를 가짐(합성).
◦
장식자는 실제 서비스의 같은 이름을 가진 메서드를 호출하고, 그 반환값에 장식을 더해 클라에게 돌려줌.
◦
장식자는 실제 서비스이 메서드 호출 전후에 별도의 로직을 수행할 수 있음.
4. 싱글턴 패턴
•
정의: 클래스의 인스턴스, 즉 객체를 하나만 만들어 사용하는 패턴
•
특징
◦
private 생성자를 가짐.
◦
단일 객체 참조 변수를 정적 속성으로 가짐.
◦
단일 객체 참조 변수가 참조하는 단일 객체를 반환하는 getInstance() 정적 메서드를 가짐.
◦
단일 객체는 쓰기 가능한 속성을 갖지 않는 것이 정석임.
•
필수 요소
◦
new를 실행할 수 없도록 생성자에 private 접근 제어자를 지정함.
◦
유일한 단일 객체를 반환할 수 있는 정적 메서드가 필요함.
◦
유일한 단일 객체를 참조할 정적 참조 변수가 필요함.
5. 템플릿 메서드 패턴
•
정의: 상위 클래스의 견본 메서드에서 하위 클래스가 오버라이딩한 메서드를 호출하는 패턴
•
구성 요소
◦
템플릿 메서드
▪
공통 로직을 수행, 로직 중에 하위 클래스에서 오버라이딩한 추상 메서드/훅 메서드를 호출
◦
템플릿 메서드에서 호출하는 추상 메서드
▪
하위 클래스가 반드시 오버라이딩해야 함.
◦
템플릿 메서드에서 호출하는 훅 메서드
▪
하위 클래스가 선택적으로 오버라이딩함.
6. 팩터리 메서드 패턴
•
정의: 오버라이드된 메서드가 객체를 반환하는 패턴
7. 전략 패턴
•
정의: 클라이언트가 전략을 생성해 전략을 실행할 컨텍스트에 주입하는 패턴
•
구성 요소
◦
전략 메서드를 가진 전략 개체
◦
전략 객체를 사용하는 컨텍스트(전략 객체의 사용자/소비자)
◦
전략 객체를 생성해 컨텍스트에 주입하는 클라이언트(제3자, 전략 객체의 공급자)
8. 템플릿 콜백 패턴
•
정의: 전략을 익명 내부 클래스로 구현한 전략 패턴
◦
전략 패턴의 변형. DI에서 사용하는 특별한 형태의 전략 패턴
•
특징
◦
전략 패턴과 동일한데, 전략을 익명 내부 클래스로 정의해서 사용함.
9. 스프링이 사랑한 다른 패턴들
•
프론트 컨트롤러 패턴: 스프링 MVC에서 활용
•
MVC 패턴: 스프링 MVC에서 활용