본문 바로가기

CS/DesignPattern

(DesignPattern) 퍼사드 패턴

퍼사드 패턴이란 무엇이고 왜 쓰는가?

"퍼사드"는 건물의 정면을 의미하는 단어로 어떤 소프트웨어의 커다란 코드 블록에 대해서 간략화된 인터페이스를 제공해주는 디자인 패턴을 의미한다.

퍼사드 객체는 고수준의 인터페이스를 정의하기 때문에 서브 시스템을 조금 더 쉽게 사용할 수 있다는 장점이 있다.

 

실습

HelpSystem 1.2.3이 존재하고 해당 시스템은 복잡한 내부 시스템을 갖고 있다고 간주하자!

  • 해당 클래스가 package-private으로 선언되어있으며 이는 외부 패키지에서 접근할 수 없다는 것이 특징이다.
class HelpSystem01 {

    public HelpSystem01() {
        System.out.println("Call Constructor :: "+getClass().getName());
    }

    public void process() {
        System.out.println("Call Process :: "+ getClass().getSimpleName());
    }
}
class HelpSystem02 {
    
    public HelpSystem02() {
        System.out.println("Call Constructor :: "+getClass().getName());
    }

    public void process() {
        System.out.println("Call Process :: "+ getClass().getSimpleName());
    }
}
class HelpSystem03 {
    
    public HelpSystem03() {
        System.out.println("Call Constructor :: "+getClass().getName());
    }

    public void process() {
        System.out.println("Call Process :: "+ getClass().getSimpleName());
    }
}

퍼사드 클래스

  • HelpSystem을 객체 생성과 동시에 함께 생성해주어 process 메서드 내부에 실행 메서드를 포함시킨다.
public class Facade {
    private HelpSystem01 helpSystem01;
    private HelpSystem02 helpSystem02;
    private HelpSystem03 helpSystem03;

    public Facade() {
        helpSystem01 = new HelpSystem01();
        helpSystem02 = new HelpSystem02();
        helpSystem03 = new HelpSystem03();
    }

    public void process() {
        helpSystem01.process();
        helpSystem02.process();
        helpSystem03.process();
    }
}

Main

public class Main {
    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.process();
    }
}

실행 결과


Code Link

https://github.com/mike6321/PURE_JAVA/tree/master/EffectiveStudy/src/main/java/me/designpattern/p_facade

 

mike6321/PURE_JAVA

Contribute to mike6321/PURE_JAVA development by creating an account on GitHub.

github.com

References