鍍金池/ 教程/ Java/ Java門面模式(或外觀模式)
Java前端控制器模式
Java工廠設(shè)計模式
Java抽象工廠模式
Java觀察者模式
Java門面模式(或外觀模式)
Java備忘錄模式
Java MVC模式
Java單例模式
Java傳輸對象模式
Java迭代器模式
Java責任鏈模式
Java命令模式
Java原型模式
Java解釋器模式
Java適配器模式
Java狀態(tài)模式
Java中介者模式(Mediator Pattern)
Java攔截過濾器模式
Java策略模式
Java組合模式
Java業(yè)務(wù)代理模式
Java裝飾模式
Java模板模式
Java橋接模式
Java過濾器模式(條件模式)
Java享元模式(Flyweight Pattern)
Java建造者(Builder)模式
Java設(shè)計模式
Java空對象模式
Java數(shù)據(jù)訪問對象模式
Java訪問者模式
Java組合實體模式
Java服務(wù)定位器模式

Java門面模式(或外觀模式)

門面模式(或外觀模式)隱藏系統(tǒng)的復雜性,并為客戶端提供一個客戶端可以訪問系統(tǒng)的接口。 這種類型的設(shè)計模式屬于結(jié)構(gòu)模式,因為此模式為現(xiàn)有系統(tǒng)添加了一個接口以隱藏其復雜性。
門面模式涉及一個類,它提供客戶端所需的簡化方法和委托調(diào)用現(xiàn)有系統(tǒng)類的方法。

實現(xiàn)實例

在這個實例中將創(chuàng)建一個Shape接口并實現(xiàn)Shape接口的具體類。在下一步中,將定義一個FacadeShapeMaker,請在下一步中參考其代碼。

ShapeMaker類使用具體類來將用戶調(diào)用委派給這些類。 FacadePatternDemo這是一個演示類,它使用ShapeMaker類來顯示結(jié)果。

門面模式(或外觀模式)的實現(xiàn)實例結(jié)構(gòu)如下圖中所示 -

第1步

創(chuàng)建一個接口,如下 -

Shape.java

public interface Shape {
   void draw();
}

第2步

創(chuàng)建實現(xiàn)幾個相同接口的具體類。
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步

創(chuàng)建一個外觀類。
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步

驗證輸出,執(zhí)行上面的代碼得到以下結(jié)果 -

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