• 外观模式


    外观模式:

    外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用

    什么时候使用外观模式:

    首先在设计初期阶段,应该要有意识的将不同的两个层分离

    将复杂的子类系统封装到一个接口,统一进行管理,使得子类系统与用户间的耦合性大大降低

    当开发大型的系统时,你可以为系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰的接口,让系统与Facade对象交互

    /*
        外观模式就是将复杂的子类系统抽象到同一个的接口进行管理
        ,外界只需要通过此接口与子类系统进行交互,而不必要直接与复杂的子类
        系统进行交互
    */
    
    #include <iostream>
    using namespace std;
    
    
    
    
    
    /*这里定义四个子类系统*/
    class SubSystemOne
    {
    public:
        void MethorOne()
        {
            cout<<"子系统方法一"<<endl;
        }
        
    };
    
    
    class SubSystemTwo
    {
    public:
        void MethorTwo()
        {
            cout<<"子系统方法二"<<endl;
        }
        
    };
    
    
    
    class SubSystemThree
    {
    public:
        void MethorThree()
        {
            cout<<"子系统方法三"<<endl;
        }
        
    };
    
    
    
    
    class SubSystemFour
    {
    public:
        void MethorFour()
        {
            cout<<"子系统方法四"<<endl;
        }
        
    };
    
    
    
    
    
    
    
    /*
        外观类,接口
    */
    class Facade
    {
        SubSystemOne *one;
        SubSystemTwo *two;
        SubSystemThree *three;
        SubSystemFour *four;
        
        
        /*构造函数*/
    public: 
        Facade()
        {
            one = new SubSystemOne();
            two = new SubSystemTwo();
            three = new SubSystemThree();
            four = new SubSystemFour();
        }
        
        
        void MethorA()
        {
            cout<<"方法组A()"<<endl;
            one->MethorOne();
            two->MethorTwo();
        }
        
        
        void MethorB()
        {
            cout<<"方法组B()"<<endl;
            three->MethorThree();
            four->MethorFour();
        }
        
        
    };
    
    
    
    
    
    
    /*
        客户端调用,客户端只需要与接口Facade交互就可以访问四个子类系统了
    */
    
    
    void main()
    {
        Facade facade;
        facade.MethorA();
        facade.MethorB();
        
    }
  • 相关阅读:
    编写高效的C#图像处理程序(3) Rgb=>Lab,图像缺陷检测的例子
    使用MvcContrib的FormHelper
    XNA游戏开发
    Microsoft.Web.Mvc Assembly 说明
    NVelocity View Engine with Asp.net Mvc
    Asp.net Mvc Framework可以在Controller中使用的Url.Action方法
    校内网API的.net版本XiaoNei.Net 1.0(非官方)
    Asp.net Mvc Framework在.net 2.0/IIS6下运行,程序示例
    CHSNS#发布V1.21版
    Asp.net Mvc Codeplex Preview 5 第一篇 Helper的新特性
  • 原文地址:https://www.cnblogs.com/DamonBlog/p/3920146.html
Copyright © 2020-2023  润新知