본문 바로가기

JAVA/디자인 패턴

5. 데코레이터 패턴

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