모양 모드


Facade 패턴은 시스템의 복잡성을 숨기고 클라이언트가 시스템에 액세스할 수 있는 인터페이스를 제공합니다. 이러한 유형의 디자인 패턴은 시스템의 복잡성을 숨기기 위해 기존 시스템에 인터페이스를 추가하는 구조적 패턴입니다.

이 패턴에는 클라이언트 요청에 대한 단순화된 메서드와 기존 시스템 클래스 메서드에 대한 위임된 호출을 제공하는 단일 클래스가 포함됩니다.

Introduction

의도: 하위 시스템의 인터페이스 집합에 대해 일관된 인터페이스를 제공합니다. 모양 패턴은 이 하위 시스템을 더 쉽게 사용할 수 있도록 하는 상위 수준 인터페이스를 정의합니다.

주요 솔루션: 복잡한 시스템의 내부 하위 시스템에 액세스하는 복잡성을 줄이고 이를 통해 클라이언트 인터페이스를 단순화합니다.

사용 시기: 1. 클라이언트는 시스템 내의 복잡한 연결을 알 필요가 없으며 전체 시스템은 "접수원"만 제공하면 됩니다. 2. 시스템 입구를 정의합니다.

해결 방법: 클라이언트가 시스템과 결합되지 않고 외관 클래스가 시스템과 결합됩니다.

키 코드: 클라이언트와 복잡한 시스템 사이에 또 ​​다른 레이어를 추가하세요. 이번에는 호출 순서, 종속성 등이 제대로 처리됩니다.

적용 예: 1. 병원에 가서 의사를 만나려면 등록을 해야 하고, 외래 진료소에 가야 하고, 가격을 협상하고, 약을 받아야 하므로 환자나 그 가족이 매우 복잡하게 느껴질 수 있습니다. 접수 직원이 있으면 그냥 접수 직원에게 맡기시면 매우 편리합니다. 2. JAVA의 3단계 개발 모델.

장점: 1. 시스템 상호의존성을 줄입니다. 2. 유연성을 향상시킵니다. 3. 안전성이 향상되었습니다.

단점: 열기 및 닫기 원칙을 준수하지 않습니다. 내용을 변경하는 것이 번거롭다면 상속 및 다시 쓰기가 적합하지 않습니다.

사용 시나리오: 1. 복잡한 모듈이나 하위 시스템에 대한 외부 액세스를 제공하는 모듈. 2. 하위 시스템은 상대적으로 독립적입니다. 3. 하급 인력으로 인한 위험을 방지합니다.

참고: 계층 구조에서는 모양 패턴을 사용하여 시스템의 각 레이어에 대한 입구를 정의할 수 있습니다.

Implementation

Shape 인터페이스와 Shape 인터페이스를 구현하는 엔터티 클래스를 생성하겠습니다. 다음 단계는 모양 클래스 ShapeMaker를 정의하는 것입니다.

ShapeMaker 클래스는 엔터티 클래스를 사용하여 이러한 클래스에 대한 사용자 호출을 나타냅니다. FacadePatternDemo, 우리의 데모 클래스는 ShapeMaker 클래스를 사용하여 결과를 표시합니다.

facade_pattern_uml_diagram.jpg

1단계

인터페이스를 만듭니다.

Shape.java

public interface Shape {
   void draw();
}

2단계

인터페이스를 구현하는 엔터티 클래스를 만듭니다.

Rectangle.java

public class Rectangle implements Shape {

   @Override
   public void draw() {
      System.out.println("Rectangle::draw()");
   }
}

Square.java

public class Square implements Shape {

   @Override
   public void draw() {
      System.out.println("Square::draw()");
   }
}

Circle.java

public class Circle implements Shape {

   @Override
   public void draw() {
      System.out.println("Circle::draw()");
   }
}

3단계

외관 클래스를 만듭니다.

ShapeMaker.java

public class ShapeMaker {
   private Shape circle;
   private Shape rectangle;
   private Shape square;

   public ShapeMaker() {
      circle = new Circle();
      rectangle = new Rectangle();
      square = new Square();
   }

   public void drawCircle(){
      circle.draw();
   }
   public void drawRectangle(){
      rectangle.draw();
   }
   public void drawSquare(){
      square.draw();
   }
}

4단계

이 모양 클래스를 사용하여 다양한 유형의 도형을 그립니다.

FacadePatternDemo.java

public class FacadePatternDemo {
   public static void main(String[] args) {
      ShapeMaker shapeMaker = new ShapeMaker();

      shapeMaker.drawCircle();
      shapeMaker.drawRectangle();
      shapeMaker.drawSquare();		
   }
}

5단계

출력을 확인합니다.

rreee