Java設計模式 之 外觀模式 簡單易於理解

一、概念:

外觀模式(Facade Pattern)隱藏系統的複雜性,並向客戶端提供了一個客戶端可以訪問系統的接口。這種類型的設計模式屬於結構型模式,它向現有的系統添加一個接口,來隱藏系統的複雜性。
這種模式涉及到一個單一的類,該類提供了客戶端請求的簡化方法和對現有系統類方法的委託調用。

二、結構圖如圖所示:

在這裏插入圖片描述

三、代碼實現

1、三個子系統類型

public class MoneySystem{
  //收款
  public void in(){
   System.out.println("收款")
 }
 
 //退款
 public void out(){
   Sysotem.out.println("退款")
 }
}
public class OrderSystem{
  //收款
  public void create(){
   System.out.println("下達訂單")
 }
 
 //退款
 public void tui(){
   Sysotem.out.println("訂單退貨")
 }
}
public class StoreSystem{
  //收款
  public void ruku(){
   System.out.println("入庫")
 }
 
 //退款
 public void chuku(){
   Sysotem.out.println("出庫")
 }
}

2、創建一個外觀接口實現三個子系統

public class Facade{
  private MoneySystem moneySystem;
  private OrderSystem orderSystem;
  private StoreSystem storeSystem;
 
 public Facade(){
   this.moneySystem=new MoneySystem();
   this.orderSystem=new OrderSystem();
   this.storeSystem=new StoreSystem();
 }

 //下達訂單流程
 public void createOrder(){
 orderSystem.create();
 storeSystem.chuku();
 moneySystem.in();
 }
}

3、創建一個客戶端測試一下

public class Test{
  public static void main(String[] args){
     //客戶下訂單
     Facade facade=new Facade();
     facade.createOrder();
  }
}

測試結果:
下達訂單
出庫
收款

四、優缺點

優點:
1、實現了子系統與客戶端之間的鬆耦合關係。
2、客戶端屏蔽了子系統組件,減少了客戶端所需處理的對象數目,並使得子系統使用起來更加容易。

缺點:
1、不能更好地限制客戶使用子系統類,如果對客戶訪問子系統類做太多的限制減少了可變性和靈活性
2、在不引入抽象外觀類的情況下,增加新的子系統可能需要修改外觀類或客戶端的代碼,違背了“開閉原則”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章