首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

外觀模式:統一門面簡化子系統調用

     編輯:關於C++

模式定義

外觀模式提供一個統一的高層接口,使子系統更易使用。客戶程式只需與門面對象交互,無需了解子系統內部複雜結構。

結構角色

  • Facade(門面):知道哪個子系統負責請求,委派給適當對象。
  • Subsystem(子系統):實現子系統功能,處理門面指派的任務,不感知門面存在。
  • Client(客戶):通過門面訪問子系統。

優勢

  1. 減少客戶處理對象數量,提高便捷性。
  2. 降低子系統與客戶耦合,促進擴展性與維護性。
  3. 層次化結構提升系統穩定性。

適用場景

  • 為複雜子系統提供簡單接口。
  • 客戶與抽象類實現之間依賴過強,引入門面解耦。
  • 構建層次化系統,每層入口為門面。

實例:電力營銷業務一站式服務

// 子系統接口
interface IElectricPowerMarketing {
    String electricityChange();
    String electricityBuild();
    String electricityAmplitude();
    String pay();
}

// 子系統實現
class IElectricPowerMarketingImpl implements IElectricPowerMarketing {
    public String electricityChange() { ... }
    public String electricityBuild() { ... }
    public String electricityAmplitude() { ... }
    public String pay() { ... }
}

// 門面類:上門服務代理人
class PublicAgent {
    private IElectricPowerMarketing marketing = new IElectricPowerMarketingImpl();
    public String sendElectricity() {
        return marketing.electricityChange()
             + marketing.electricityBuild()
             + marketing.electricityAmplitude()
             + marketing.pay();
    }
}

// 客戶端
class Client {
    public static void main(String[] args) {
        new PublicAgent().sendElectricity();
    }
}

框架中的應用

  • Spring HibernateTemplate:封裝 SessionFactory, Session, Query 等底層 API,客戶只需調用 find() 等高層方法。
  • JDBC DataSource 等也常作為門面隱藏驅動細節。

注意

門面模式不符合「接口隔離原則」(門面接口可能較胖),但若合理使用,對系統設計極有裨益。避免在門面中加入業務邏輯,僅做委派與組合。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved