当前位置:编程学习 > 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
 

补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,