티스토리 뷰
데코레이터 패턴 (Decorator Pattern)
💡 기존 코드 변경 없이 부가 기능을 동적으로 추가할 수 있는 패턴이다. 확장을 위해 서브 클래스를 생성하는 것이 아닌 위임을 사용해 부가기능을 추가하는 것이 가능하다.
👍 장점
- 다른 객체에 영향을 주지 않고 객체에 새로운 책임을 동적으로 추가할 수 있다. 즉, OCP 원칙을 준수한다.
- 필요에 따라 추가•삭제가 용이하다.
객체 모델
Component
데코레이터 혹은 데코레이터를 통해 책임을 추가할 가능성이 있는 객체의 인터페이스
Decorator
Component 객체를 합성하면서 Component 인터페이스를 구현해 중간에 책임을 추가할 수 있도록 만든 객체
ConcreteComponent
데코레이터를 통해 책임을 추가할 수 있는 Component 구현 객체
🤔 상세코드는 아래 예제코드를 통해 확인하세요
프록시 패턴 ( Proxy Pattern )
💡 특정 객체에 대한 접근 제어 혹은 기존 코드 변경없이 기능을 추가할 수 있는 디자인 패턴이다.
그 구조 자체는 데코레이터 패턴과 유사하지만 그 목적이 다르다.
👍 장점
- 다른 객체에 영향을 주지 않고 객체에 새로운 책임을 동적으로 추가할 수 있다. 즉, OCP 원칙을 준수한다.
- 접근 제어, 초기화 지연등 다양한 기능을 제공할 수 있다.
객체 모델
Subject
Proxy와 RealSubject 을 묶는 공통 인터페이스이다.
Proxy
Subject 을 구현하여 RealSubject 으로의 요청을 제어하거나 부가 기능을 추가한다. 기능은 아래와 같다.
- 원격지 프록시 - 요청 메시지와 인자를 인코딩 해 다른 주소 공간에 실제 대상에게 전달
- 가상의 프록시 - 실제 대상에 추가 정보를 보유하여 실제 접근을 지연함.
- 보호용 프록시 - 요청 대상의 권한 확인및 요청 제어
🤔 상세코드는 아래 예제코드를 통해 확인하세요
🙅 데코레이터와 프록시의 차이
패턴 이름 | 차이점 |
프록시 패턴 | • 제어의 흐름을 변경하거나 별도의 로직 처리를 목적으로 한다. • 클라이언트가 받는 반환 값은 특별한 경우가 아니라면 변경하지 않는다. |
데코레이터 패턴 | • 클라이언트가 받는 반환값에 영향을 주는 패턴이다. |
🔥 클라이언트가 요청하는 반환 값에 영향을 주는 지 여부가 가장 큰 차이점이다.
예제코드
참조
'architecture > Design Pattern' 카테고리의 다른 글
[디자인 패턴] 플라이웨이트 패턴 (Flyweight pattern) (2) | 2022.09.24 |
---|---|
[디자인 패턴] 파사드 패턴(Facade Pattern) (0) | 2022.09.23 |
[디자인 패턴] Composite Pattern (0) | 2022.09.22 |
[디자인 패턴] 브릿지 패턴 (Bridge Pattern) (0) | 2022.09.18 |
[디자인 패턴] 어댑터 패턴 ( Adapter Pattern ) (0) | 2022.09.15 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 수직 분할
- 동적 디스패치
- 뾰족함
- 컴포짓 패턴
- 세션 불일치
- 장애 해결기
- Session
- 클린 아키텍처
- 동적 타입 언어
- Clean Architecture
- java
- ATDD
- 메모리 파편화
- pool
- RestAssured
- pass by value
- 객체 풀
- OOP
- pass by reference
- Sticky Session
- 육각형 아키텍처
- 외부 단편화
- Object Pool
- SpringBoot 2.2
- Memory Fragmentation
- 메모리 단편화
- 정적 타입 언어
- 수평 분할
- multimap
- 내부 단편화
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함