天天看點

Java單體應用 - 架構模式 - 03.設計模式-11.外觀模式外觀模式

原文位址: http://www.work100.net/training/monolithic-architecture-design-patterns-facade-pattern.html 更多教程: 光束雲 - 免費課程

外觀模式

序号 文内章節 視訊
1 概述 -
2 實作

請參照如上

章節導航

進行閱讀

1.概述

外觀模式(

Facade Pattern

)隐藏系統的複雜性,并向用戶端提供了一個用戶端可以通路系統的接口。這種類型的設計模式屬于結構型模式,它向現有的系統添加一個接口,來隐藏系統的複雜性。

這種模式涉及到一個單一的類,該類提供了用戶端請求的簡化方法和對現有系統類方法的委托調用。

意圖:

為子系統中的一組接口提供一個一緻的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。

主要解決:

降低通路複雜系統的内部子系統時的複雜度,簡化用戶端與之的接口。

何時使用:

  • 用戶端不需要知道系統内部的複雜聯系,整個系統隻需提供一個"接待員"即可。
  • 定義系統的入口。

如何解決:

用戶端不與系統耦合,外觀類與系統耦合。

關鍵代碼:

在用戶端和複雜系統之間再加一層,這一層将調用順序、依賴關系等處理好。

應用執行個體:

  • 去醫院看病,可能要去挂号、門診、劃價、取藥,讓患者或患者家屬覺得很複雜,如果有提供接待人員,隻讓接待人員來處理,就很友善。
  • Java 的三層開發模式。

優點:

  • 減少系統互相依賴。
  • 提高靈活性。
  • 提高了安全性。

缺點:

不符合開閉原則,如果要改東西很麻煩,繼承重寫都不合适。

使用場景:

  • 為複雜的子產品或子系統提供外界通路的子產品。
  • 子系統相對獨立。
  • 預防低水準人員帶來的風險。

注意事項:

在階層化結構中,可以使用外觀模式定義系統中每一層的入口。

2.實作

我們将建立一個

Shape

接口和實作了

Shape

接口的實體類。

下一步是定義一個外觀類

ShapeMaker

ShapeMaker

類使用實體類來代表使用者對這些類的調用。

FacadePatternDemo

,我們的示範類使用

ShapeMaker

類來顯示結果。

步驟 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

執行程式,輸出結果:

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

上一篇:

裝飾器模式

下一篇:

享元模式
如果對課程内容感興趣,可以掃碼關注我們的

公衆号

QQ群

,及時關注我們的課程更新
Java單體應用 - 架構模式 - 03.設計模式-11.外觀模式外觀模式
Java單體應用 - 架構模式 - 03.設計模式-11.外觀模式外觀模式