아무거나

[Design Pattern] Facade Pattern 본문

Java & Kotlin/Java

[Design Pattern] Facade Pattern

전봉근 2020. 1. 4. 12:59
반응형

퍼사드 패턴(Facade Pattern)

퍼사드 패턴이란 복잡한 과정을 간단하게 제공

 

 

다양한 패키지에서 부터 여러가지 클래스들을 제공받고 facade는 단순한 인터페이스를 제공함으로써 client들이 간단하게 어떤 과정(ex:함수, 프로젝트 등)을 사용할 수 있도록하는 패턴

퍼사드 패턴 예시 - 1

먼저 System이란 Package를 만들고 거기에 메인시스템이될 Facade 클래스를 생성
[Facade.java]

서브시스템인 HelpSystem01를 생성하자.
[HelpSystem01.java]

package com.bkjeon.facade.system;

class HelpSystem01 {

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

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

}

HelpSystem01을 복사하여 HelpSystem03 까지 총 3개의 클래스를 만든다.
[HelpSystem02.java]

package com.bkjeon.facade.system;

class HelpSystem02 {

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

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

}

[HelpSystem03.java]

package com.bkjeon.facade.system;

class HelpSystem03 {

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

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

}

Facade 클래스 작성
[Facade.java]

package com.bkjeon.facade.system;

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.java]

package com.bkjeon.facade;

import com.bkjeon.facade.system.Facade;

public class Main {

    public static void main(String[] args) {
        // 한 번 호출하는데 서브시스템들의 복잡한 과정을 생각하지 않고 바로 쓸 수 있게 해주는 패턴
        Facade facade = new Facade();
        facade.process();
    }

}

실행결과

Call Constructor: HelpSystem01
Call Constructor: HelpSystem02
Call Constructor: HelpSystem03
Call Process: HelpSystem01
Call Process: HelpSystem02
Call Process: HelpSystem03

퍼사드 패턴은 위와 같이 한 번 호출하는데 서브시스템들의 복잡한 과정을 생각하지 않고 바로 쓸 수 있게 해주는 패턴이다.

 

 

참고: https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4/dashboard

반응형
Comments