Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- semanage
- c3 축 가리기
- c3 축 없애기
- centos pyhon 설치
- snmp test
- CentOS7
- snmp
- c3 step graph
- 정규식 활용
- 1697
- python popen
- linux시간으로 변경
- c3 초
- gcc regex
- gcc 업데이트
- c3 second
- c++ 정규식
- 정규식 컴파일
- telegraf
- python os
- 백준
- influxdb 설치
- regex_search
- python subprocess
- g++ 업데이트
- selinux port 등록
- InfluxDB
- subporcess path
- 정규식 문자열 출력
- grafana dashboard
Archives
- Today
- Total
리셋 되지 말자
데코레이터 패턴(Decorator Pattern) 본문
프록시 패턴 vs 데코레이터 패턴
프록시 패턴은 실제 서비스 메서드의 결과값에 영향을 주지 않지만, 데코레이터 패턴은 클라이언트가 받는 반환값에 장식을 더한다.
- 프록시 패턴
제어의 흐름을 변경하거나 별도의 로직 처리를 목적으로 한다. 클라이언트가 받는 반환값을 특별한 경우가 아니면 변경하지 않는다.
- 데코레이터 패턴
클라이언트가 받는 반환값에 장식을 더한다.
예시 코드
- IService.java
package decoratorPattern;
public interface IService {
public abstract String runSomething();
}
- Service.java
package decoratorPattern;
public class Service implements IService{
public String runSomething() {
return "Service !!!";
}
}
- Decorator.java
package decoratorPattern;
public class Decorator implements IService{
IService service;
public String runSomething() {
System.out.println("호출에 대한 장식 주목적, 클라이언트에게 반환 결과에 장식을 더하여 전달");
service = new Service();
return "Good" + service.runSomething();
}
}
- ClientWithDecorator.java
package decoratorPattern;
public class ClientWIthDecorator {
public static void main(String[] args) {
IService decorator = new Decorator();
System.out.println(decorator.runSomething());
}
}
- 결과
프록시 패턴과 정말 유사한데, 결과값에 장식을 더한다는 차이가 있다.
중요 포인트
- 장식자는 실제 서비스와 같은 이름의 메서드를 구현한다. 이때 '인터페이스'를 사용
- 장식자는 실제 서비스에 대한 참조 변수를 갖는다.
- 장식자는 실제 서비스와 같은 이름을 가진 메서드를 호출하고, 그 반환값에 '장식'을 더해 클라이언트에게 돌려준다.
- 장식자는 실제 서비스의 멘서드 호출 전후에 별도의 로직을 수행할 수도 있다.
장식자 패턴 한 문장 정리
메서드 호출의 반환값에 변화를 주기 위해 중간에 장식자를 두는 패턴
프록시 패턴과 마찬가지로 개방 폐쇄 워칙(OCP)와 의존 역전 원칙(DIP)이 적용된 설계 패턴이다.
'Java(폐지) > 디자인 패턴' 카테고리의 다른 글
템플릿 메서드 패턴(Template Method Pattern) (0) | 2020.08.04 |
---|---|
싱글톤 패턴(Singleton Pattern) (0) | 2020.08.04 |
프록시 패턴(Proxy Pattern) (0) | 2020.08.04 |
어댑터 패턴(Adapter Pattern) (0) | 2020.07.21 |
디자인 패턴 이란? (0) | 2020.07.21 |
Comments