Java Design Pattern - Facade Pattern

업데이트:

Design Pattern

  • 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다.
  • 디자인 패턴은 알고리즘이 아니라 상황에 따라 자주 쓰이는 설계 방법을 정리한 코딩 방법론일 뿐이며 모든 상황의 해결책이 아니다.

Structural Patterns, 구조 패턴

  • 클래스와 객체를 더 큰 결과물로 합칠 수 있는 구조로 설계하는 패턴이다.
  • 서로 다른 인터페이스를 지닌 여러 개의 객체를 조합하여 단일 인터페이스를 제공하거나, 객체들을 서로 묶어 새로운 기능을 제공하는 패턴이다.

Facade Pattern

  • 서브시스템을 더 쉽게 사용할 수 있도록 높은 수준의 인터페이스를 정의하고 제공하는 패턴이다.

Example

public interface Shape {

  void draw();

}
public class Circle implements Shape {

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

}
public class Rectangle implements Shape {

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

}
public class Square implements Shape {

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

}
  • Shape 인터페이스를 상속받은 Circle, Rectangle, Square 객체를 구현한다.
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();
  }

}
  • ShapeMaker 객체를 구현하여 특정 형태에 대한 요청을 내부적으로 구현하여 결과를 쉽게 제공한다.
public class FacadepatternMain {

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

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

}
  • ShapeMaker 객체를 이용하여 각 형태를 그려본다.

Source

Sample Code는 여기에서 확인 가능합니다.

댓글남기기