[Java] 퍼사드 패턴(Facade pattern)

Junseo Kim·2021년 3월 10일
0

[디자인 패턴]

목록 보기
3/3

많은 서브 시스템을 거대한 클래스로 감싸서 외부에서는 내부 서브 시스템을 추상화한 인터페이스만 제공해준다.

각 서브 시스템이 존재한다.

public class Soap {
    public void washFace() {
        System.out.println("세수하기");
    }
}
public class Shampoo {
    public void washHair() {
        System.out.println("머리감기");
    }
}
public class BodyWash {
    public void washBody() {
        System.out.println("몸 씻기");
    }
}

이 서브시스템들을 하나로 감싼다.

public class Bathroom {
    private final Soap soap;
    private final Shampoo shampoo;
    private final BodyWash bodyWash;

    public Bathroom() {
        this.soap = new Soap();
        this.shampoo = new Shampoo();
        this.bodyWash = new BodyWash();
    }

    public void wash() {
        soap.washFace();
        shampoo.washHair();
        bodyWash.washBody();
    }
}

클라이언트에서는 wash만 호출하면 내부 서브시스템들이 수행된다.

public class Application {
    public static void main(String[] args) {
        Bathroom bathroom = new Bathroom();
        bathroom.wash();
    }
}

0개의 댓글