Decorator pattern
데코레이터 패턴은 기존 뼈대(클래스)는 유지하되, 이후 필요한 형태로 꾸밀 때 사용한다. 확장이 필요한 경우 상속의 대안으로도 활용 한다. SOLID중에서 개방폐쇄 원칙(OCP)과 의존 역전 원칙(DIP)를 따른다.
기본 베이스를 건들지 않고 부가적인 첨가를 하면서 속성을 변환시키는 패턴
public interface iCar {
int getPrice();
void showPrice();
}
자동차 인터페이스
public class AudiDecorator implements iCar{
protected iCar audi;
protected String modelName;
protected int modelPrice;
public AudiDecorator(iCar audi, String modelName, int modelPrice){
this.audi =audi;
this.modelName = modelName;
this.modelPrice = modelPrice;
}
@Override
public int getPrice() {
return audi.getPrice() + modelPrice;
}
@Override
public void showPrice() {
System.out.println(modelName +"의 가격은?"+getPrice() + "원 입니다");
}
}
속성 정의
public class A3 extends AudiDecorator{
public A3(iCar audi, String modelName) {
super(audi, modelName, 1000);
}
}
새로운 차 속성 데코레이터 속성을 상속받는다.
a4 a5코드 생략
iCar audi = new Audi(1000);
audi.showPrice();
//a3
iCar audi3 = new A3(audi, "A3");
audi3.showPrice();
//a4
iCar audi4 = new A4(audi, "A4");
audi4.showPrice();
//a5
iCar audi5 = new A5(audi, "A5");
audi5.showPrice();
'JAVA > 디자인 패턴' 카테고리의 다른 글
7. Facade pattern (1) | 2022.06.29 |
---|---|
6. 옵저버 패턴 (1) | 2022.06.29 |
4. 프록시(Proxy) 패턴 (0) | 2022.06.25 |
3. 어뎁터 패턴 (0) | 2022.06.24 |
2. 싱글톤 패턴 (1) | 2022.06.24 |