전체 보기
📕

[자바 객체 지향] Chapter 6. 스프링이 사랑한 디자인 패턴

작성일자
2022/09/15
태그
SUB PAGE
프로젝트
자바 객체 지향
책 종류
1 more property
목차

1. 어댑터 패턴

정의: 호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴
즉, 객체를 속성으로 만들어서 참조하는 패턴

2. 프록시 패턴

정의: 제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴
특징
대리자는 실제 서비스와 같은 이름의 메서드를 구현함. 이때 인터페이스를 사용함.
대리자는 실제 서비스에 대한 참조 변수를 가짐(합성).
대리자는 실제 서비스의 같은 이름을 가진 메서드를 호출하고 그 값을 클라에게 돌려줌.
대리자는 실제 서비스의 메서드 호출 전후에 별도의 로직을 수행할 수 있음.

3. 데코레이션 패턴

정의: 메서드 호출의 반환값에 변화를 주기 위해 중간에 장식자를 두는 패턴
특징
장식자는 실제 서비스와 같은 이름의 메서드를 구현함. 이때 인터페이스를 사용함.
장식자는 실제 서비스에 대한 참조 변수를 가짐(합성).
장식자는 실제 서비스의 같은 이름을 가진 메서드를 호출하고, 그 반환값에 장식을 더해 클라에게 돌려줌.
장식자는 실제 서비스이 메서드 호출 전후에 별도의 로직을 수행할 수 있음.

4. 싱글턴 패턴

정의: 클래스의 인스턴스, 즉 객체를 하나만 만들어 사용하는 패턴
특징
private 생성자를 가짐.
단일 객체 참조 변수를 정적 속성으로 가짐.
단일 객체 참조 변수가 참조하는 단일 객체를 반환하는 getInstance() 정적 메서드를 가짐.
단일 객체는 쓰기 가능한 속성을 갖지 않는 것이 정석임.
필수 요소
new를 실행할 수 없도록 생성자에 private 접근 제어자를 지정함.
유일한 단일 객체를 반환할 수 있는 정적 메서드가 필요함.
유일한 단일 객체를 참조할 정적 참조 변수가 필요함.

5. 템플릿 메서드 패턴

정의: 상위 클래스의 견본 메서드에서 하위 클래스가 오버라이딩한 메서드를 호출하는 패턴
구성 요소
템플릿 메서드
공통 로직을 수행, 로직 중에 하위 클래스에서 오버라이딩한 추상 메서드/훅 메서드를 호출
템플릿 메서드에서 호출하는 추상 메서드
하위 클래스가 반드시 오버라이딩해야 함.
템플릿 메서드에서 호출하는 훅 메서드
하위 클래스가 선택적으로 오버라이딩함.

6. 팩터리 메서드 패턴

정의: 오버라이드된 메서드가 객체를 반환하는 패턴

7. 전략 패턴

정의: 클라이언트가 전략을 생성해 전략을 실행할 컨텍스트에 주입하는 패턴
구성 요소
전략 메서드를 가진 전략 개체
전략 객체를 사용하는 컨텍스트(전략 객체의 사용자/소비자)
전략 객체를 생성해 컨텍스트에 주입하는 클라이언트(제3자, 전략 객체의 공급자)

8. 템플릿 콜백 패턴

정의: 전략을 익명 내부 클래스로 구현한 전략 패턴
전략 패턴의 변형. DI에서 사용하는 특별한 형태의 전략 패턴
특징
전략 패턴과 동일한데, 전략을 익명 내부 클래스로 정의해서 사용함.

9. 스프링이 사랑한 다른 패턴들

프론트 컨트롤러 패턴: 스프링 MVC에서 활용
MVC 패턴: 스프링 MVC에서 활용