일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- gcm 푸시 번역
- 웹사이트성능
- 카프카
- php
- NoSQL
- 푸시
- GCM 번역
- git
- Java
- Design Pattern
- kafka
- 레디스
- 웹사이트 성능
- 웹사이트최적화기법
- Push
- nginx
- 자바스크립트
- notification
- 페이스북 번역
- 카프카 트랜잭션
- redis
- nginx설정
- 디자인패턴
- 푸시 번역
- 성능
- JPA
- nginx설치
- GCM
- APNS
Archives
- Today
- Total
간단한 개발관련 내용
Decorator Pattern 본문
Computer Science/Architechture & Design Patterns
Decorator Pattern
vincenzo.dev.82 2015. 12. 4. 00:57반응형
Decorator Pattern
디자인 카탈로그에는 ...
- 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴으로, 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있습니다.
디자인 패턴 영역 - 구조 및 객체 패턴.
디자인 패턴 관계도 - (composite -> adding responsibilities to objects)
의도 - 객체에 동적으로 새로운 책임을 추가할 수 있게 합니다. 기능을 추가하려면, 서브클래스를 생성하는 것보다 융통성 있는 방법을 제공합니다.
* 데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 첨가한다.
데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다.(상속을 이용해 타입을 맞춘다.)
동기 - 정적인 상속이 아니라 동적인 상황에서 필요할 때-! 객체에 책임을 부여(추가/삭제)하고 싶을 때 사용합니다.
활용 -
1. 동적으로 또한 투명하게 다른 객체에 영향을 주지 않고 개개의 객체에 새로운 책임을 추가하기 위해 사용합니다.
2. 제거될 수 있는 책임에 대해 사용합니다.
3. 상속으로 서브클래스를 생성하는 방법이 실질적이지 못할 때 사용합니다.
결과
이익1. 단순한 상속보다 설계의 융통성을 더 많이 증대시킬 수 있습니다.
이익2. 클래스 계통의 상부측 클래스에 많은 기능이 누적되는 상황을 피할 수 있습니다.
부담1. 장식자와 해당 그 장식자의 구성요소가 동일한 것은 아닙니다.
부담2. 장식자를 사용함으로써 작은 규모의 객체들이 많이 생깁니다. 이 때 객체들을 잘 이해하지 못하고 있다면 시스템을 수정하는 과정이 복잡해 진다.
* OCP 를 만족시키는 패턴. 클래스는 확장에 대해서는 열려 있지만 변경에 대해서는 닫혀 있어야 한다.
반응형