CHAPTER 7 구조 디자인 패턴_PART_2
7.3.4 래퍼 패턴
- 프록시 패턴
- 데커레이터 패턴
- 어뎁터 패턴
코드 구조 측면에서 이 세가지 디자인 패턴을 통틀어 래퍼 패턴으로 구분
원본 클래스를 래퍼 클래스를 통해 두 번 캡슐화하는 패턴
7.4 브리지 패턴
상속 대신 합성을 사용 복잡한 상속 관계를 간단한 합성 관계로 단순화
7.4.1 브리지 패턴의 정의
추상화와 구현을 디커플링해야만 두 가지가 서로 독립적으로 변화할 수 있다
7.5 퍼사드 패턴
7.5.1 퍼사드 패턴과 인터페이스 설계
서브 시스템에 대한 통합 인터페이스 세트를 제공하고 하위 시스템을 더 쉽게 만들기 위한 상위 통합 인터페이스를 제공한다
7.6 복합체 패턴
주로 트리 구조의 데이터를 처리하는데 사용된다 여기서 데이터는 단순한 객체의 모음으로 이해
7.6.1 복합체 패턴 기반의 디렉터리 트리
부분 - 전체 계층 구조로 인식하는 트리 구조로 구성된 객체 컬렉션, 복합체 패턴을 통해 코드 사용자로 대표되는 클라이언트가
개별 객체와 복합 객체의 처리 방식을 하나로 통합할 수 있다고 정의
7.7 플라이웨이트 패턴
공유를 위해 사용하는 패턴 목적은 객체를 공유하여 메모리 사용량을 줄이는 것
7.7.5 플라이웨이트 패턴과 싱글턴 패턴, 캐시, 오브젝트 풀의 차이
- 플라이웨이트 패턴과 싱글턴 패턴의 차이
- 싱글턴 패턴에서 클래스는 하나의 객체만 생성하고, 플라이웨이트 패턴에서는 여러 객체를 생성하고 여러 코드에서 공유된다
- 플라이웨이트 패턴은 다중 인스턴스 패턴과 다소 유사한 면이 있다
- 플라이웨이트 패턴과 캐싱의 차이점
- 플라이웨이트 패턴은 클래스를 사용하여 생성된 객체를 캐싱
- 캐시는 실제로 저장소를 의미
- 플라이웨이트 패턴과 오브젝트 풀의 차이
- 오브젝트 풀은 오프젝트 풀에서 객체를 꺼내서 사용하고 다시 풀에 넣는다