facade pattern

SOL·2023년 6월 22일
0

TIL

목록 보기
5/7

structural design patterns 중 하나로, 복잡한 서브 시스템들을 하나의 인터페이스로 캡슐화한다.


-> 엔진을 시작하거나, 멈출 때 위의 객체들에 모두 접근해서 이용해야 한다.

  • 시작할 때 코드
airFlowController.takeAir()
fuelInjector.on()
fuelInjector.inject()
starter.start()
coolingController.setTemperatureUpperLimit(DEFAULT_COOLING_TEMP)
coolingController.run()
catalyticConverter.on()

-> facade 패턴을 이용하면 사용자가 모두 부를 필요 없이 하나의 인터페이스만 이용하면 된다.

public class CarEngineFacade {
    private static int DEFAULT_COOLING_TEMP = 90;
    private static int MAX_ALLOWED_TEMP = 50;
    private FuelInjector fuelInjector = new FuelInjector();
    private AirFlowController airFlowController = new AirFlowController();
    private Starter starter = new Starter();
    private CoolingController coolingController = new CoolingController();
    private CatalyticConverter catalyticConverter = new CatalyticConverter();

    public void startEngine() {
        fuelInjector.on();
        airFlowController.takeAir();
        fuelInjector.on();
        fuelInjector.inject();
        starter.start();
        coolingController.setTemperatureUpperLimit(DEFAULT_COOLING_TEMP);
        coolingController.run();
        catalyticConverter.on();
    }
}

참고

0개의 댓글