程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 設計模式筆記之---門面模式

設計模式筆記之---門面模式

編輯:C++入門知識

門面模式(Facade):為子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這個子系統更加容易使用。
模式說明:
        子系統(SubSystem)
                負責處理復雜的邏輯處理。不直接跟客戶打交道。
        門面(Facade)
                負責跟子系統進行交互,提供簡單易用的功能或接口給客戶。
        客戶(Client)
                通過門面和子系統進行交互,不需關心子系統的細節。
UML類圖:
                
門面模式基本代碼:
[cpp] 
/******************************************************************** 
filename:   Facade.h
created:    2012-09-28 
author:     firehood 
 
purpose:    firehood 學設計模式之---門面模式 
*********************************************************************/ 
#pragma once 
#include <iostream> 
using namespace std; 
 
class SubSystemA 

public: 
    SubSystemA(void){} 
    ~SubSystemA(void){} 
    void Operate1(void) 
    { 
        cout<<"SubSystemA:操作1"<<endl; 
    } 
    void Operate2(void) 
    { 
        cout<<"SubSystemA:操作2"<<endl; 
    } 
}; 
 
class SubSystemB 

public: 
    SubSystemB(void){} 
    ~SubSystemB(void){} 
    void Operate1(void) 
    { 
        cout<<"SubSystemB:操作1"<<endl; 
    } 
    void Operate2(void) 
    { 
        cout<<"SubSystemB:操作2"<<endl; 
    } 
}; 
 
class SubSystemC 

public: 
    SubSystemC(void){} 
    ~SubSystemC(void){} 
    void Operate1(void) 
    { 
        cout<<"SubSystemC:操作1"<<endl; 
    } 
    void Operate2(void) 
    { 
        cout<<"SubSystemC:操作2"<<endl; 
    } 
}; 
 
class Facade 

public: 
    Facade(void){} 
    virtual ~Facade(void){} 
    void MethodA(void) 
    { 
        cout<<"方法A:"<<endl; 
        m_SubSystemA.Operate1(); 
        m_SubSystemB.Operate2(); 
        m_SubSystemC.Operate2(); 
    } 
    void MethodB(void) 
    { 
        cout<<"方法B:"<<endl; 
        m_SubSystemA.Operate1(); 
        m_SubSystemB.Operate1(); 
        m_SubSystemC.Operate1(); 
    } 
private: 
    SubSystemA m_SubSystemA; 
    SubSystemB m_SubSystemB; 
    SubSystemC m_SubSystemC; 
}; 

客戶端調用代碼:
[cpp] 
#include "Facade.h" 
#include <iostream> 
using namespace std; 
 
int main(int argc,char* argv[]) 

    cout<<"*************************************"<<endl; 
    cout<<"firehood 學設計模式之---門面模式"<<endl; 
    cout<<"*************************************"<<endl; 
    
    Facade facade; 
    facade.MethodA(); 
    facade.MethodB();   
 
    system("pause"); 
    return 0; 

運行結果:
*************************************
firehood 學設計模式之---門面模式
*************************************
方法A:
SubSystemA:操作1
SubSystemB:操作2
SubSystemC:操作2
方法B:
SubSystemA:操作1
SubSystemB:操作1
SubSystemC:操作1
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved