English 中文(简体)
Design Patterns - Facade Pattern
  • 时间:2024-11-03

Design Patterns - Facade Pattern


Previous Page Next Page  

Facade pattern hides the complexities of the system and provides an interface to the cpent using which the cpent can access the system. This type of design pattern comes under structural pattern as this pattern adds an interface to existing system to hide its complexities.

This pattern involves a single class which provides simppfied methods required by cpent and delegates calls to methods of existing system classes.

Implementation

We are going to create a Shape interface and concrete classes implementing the Shape interface. A facade class ShapeMaker is defined as a next step.

ShapeMaker class uses the concrete classes to delegate user calls to these classes. FacadePatternDemo, our demo class, will use ShapeMaker class to show the results.

Facade Pattern UML Diagram

Step 1

Create an interface.

Shape.java

pubpc interface Shape {
   void draw();
}

Step 2

Create concrete classes implementing the same interface.

Rectangle.java

pubpc class Rectangle implements Shape {

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

Square.java

pubpc class Square implements Shape {

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

Circle.java

pubpc class Circle implements Shape {

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

Step 3

Create a facade class.

ShapeMaker.java

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

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

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

Step 4

Use the facade to draw various types of shapes.

FacadePatternDemo.java

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

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

Step 5

Verify the output.

Circle::draw()
Rectangle::draw()
Square::draw()
Advertisements