[JAVA/디자인패턴] Facade Pattern, 퍼사드 패턴

2023. 11. 27. 05:00
반응형

 

Facade Pattern

https://en.wikipedia.org/wiki/Facade_pattern

 

 

퍼사드 패턴은 서브시스템의 복잡성을 숨기고 클라이언트에게 간단한 인터페이스를 제공하는 구조적인 디자인 패턴이다.

 

문제 : 서브시스템이 너무 많고 사용하기가 복잡하다.

해결방안 : 단순한 인터페이스를 제공하는 객체를 중간에 넣음

결과 : 최소 지식 원칙에 입각해 의존성 최소화

 

 

 

 


아트 디자인 회사에 작품 의뢰

 

클라이언트는 아트 디자인 회사에 작품을 의뢰한다고 생각해보자. 클라이언트가 일일이 디자이너, 밑그림 작업자, 채색자 등의 작업순서를 알고 통제할 필요가 있을까? 클라이언트는 단순히 의뢰하는 인터페이스를 호출하도록 하는 것이 말이 될 것이다.

 

 

 

1. 서브 시스템들 작성

public class Designer {
    public void analysis() {
        System.out.println("디자이너가 요구사항 분석중");
    }

    public void design() {
        System.out.println("디자이너가 초안 구상중");
    }
}

public class Drawer {

    public void draw() {
        System.out.println("드로어가 밑그림 그리는 중");
    }

    public void linePick() {
        System.out.println("드로어가 선 따는 중");
    }
}

public class Painter {

    public void colorScheme() {
        System.out.println("채색자가 배색하는 중");
    }
    public void paint() {
        System.out.println("채색자가 칠하는 중");
    }
}

 

 

 

2. Facade 클래스 작성

public class ArtCompany {
    private Designer designer;
    private Drawer drawer;
    private Painter painter;

    public ArtCompany(){
        this.designer = new Designer();
        this.drawer = new Drawer();
        this.painter = new Painter();
    }

    public void work(){
        this.designer.analysis();
        this.designer.design();
        this.drawer.draw();
        this.drawer.linePick();
        this.painter.colorScheme();
        this.painter.paint();
    }
}

 

 

 

 

3. 클라이언트 작성 

 

public class Main {
    public static void main(String[] args){
        ArtCompany company = new ArtCompany();
        company.work();
    }
}

 

클라이언트는 아트 디자인 회사의 내부의 디자이너, 밑그림 작업자, 채색자 등이 어떤 일을 하는 지 직접 알지 않고 단지 디자인 회사에 의뢰만 하면 된다.

 

 

 

반응형

BELATED ARTICLES

more