데코레이터 패턴

Red Culture·2021년 6월 23일
0

데코레이터 패턴이란

객체의 결합을 통해 기능을 동적으로 유연하게 확장 할 수 있게 해주는 패턴이다.
기본 기능에 추가할 수 있는 기능의 종류가 많은 경우에 각 추가 기능을 Decorator 클래스로 정의 한 후 필요한 Decorator 객체를 조합함으로써 추가 기능의 조합을 설계 하는 방식이다.

활용 예제

Component는 커피, ConcreteComponent는 케냐 아메리카노, 에티오피아 등 객체(컴포넌트)와 우유, 시럽, 휘핑 크림 (데코레이터 객체)를 조합한다.

public abstract class Coffee {

    public abstract void brewing();
}

public abstract class Decorator extends Coffee {

    Coffee coffee;
    public Decorator(Coffee coffee) {

        this.coffee = coffee;
    }

    @Override
    public void brewing() {
        coffee.brewing();
    }
}

public class KenyaAmericano extends Coffee {

    @Override
    public void brewing() {
        System.out.print("KenyaAmericano ");
    }
}

public class EtiopiaAmericano extends Coffee {

    @Override
    public void brewing() {
        System.out.print("EtiopiaAmericano ");
    }
}

public class Latte extends Decorator {

    public Latte(Coffee coffee) {
        super(coffee);
    }

    public void brewing() {
        super.brewing();
        System.out.print("Adding Milk ");
    }
}

public class Mocha extends Decorator {

    public Mocha(Coffee coffee) {
        super(coffee);
    }

    @Override
    public void brewing() {
        super.brewing();
        System.out.print("Adding Mocha Syrup ");
    }
}

*참고자료 - 패스트 캠퍼스 온라인 강의

profile
자기 개발, 학습 정리를 위한 블로그

0개의 댓글

관련 채용 정보