- 정의
- 구현 예제
데코레이터 패턴 (Decorator Pattern)
객체 간의 결합을 통해 기능을 동적으로 유연하게 확장하도록 돕는 디자인 패턴
즉, 기본 기능에 추가할 기능이 많아질 경우, Decorator 클래스로 정의하여 각 Decorator 객체들을 조합하여 추가 기능을 조합하여 설계하는 것
구조
Component
ConcreteComponent
: 기본 기능Decorator
: 추가 기능여러 종류의 자동차를 조립할 때의 예제를 살펴보자.
Component
: Car
ConcreteComponent
: BasicCar
Decorator
: CarDeco
Bus
Taxi
Car
public interface Car {
void assemble();
}
BasicCar
public class BasicCar implements Car {
@Override
public void assemble() {
System.out.println("기본 조립");
}
}
Decorator
ublic class CarDeco implements Car {
private Car car;
public CarDeco(Car car) {
this.car = car;
}
@Override
public void assemble() {
car.assemble();
}
}
Bus
public class Bus extends CarDeco {
public Bus(Car car) {
super(car);
}
@Override
public void assemble() {
super.assemble();
expand();
}
private void expand() {
System.out.println("크기 확장");
}
}
Taxi
public class Taxi extends CarDeco {
public Taxi(Car car) {
super(car);
}
@Override
public void assemble() {
super.assemble();
putTaxiLight();
}
private void putTaxiLight() {
System.out.println("택시 등 설치");
}
}
Main
public class Main {
public static void main(String[] args) {
Bus bus = new Bus(new BasicCar());
bus.assemble();
System.out.println("++++++++++++");
Taxi taxi = new Taxi(new BasicCar());
taxi.assemble();
}
}
print >>>
기본 조립
크기 확장
++++++++++++
기본 조립
택시 등 설치
결론