设计模式(七) 外观模式 C++实现

外观模式百度定义

外观模式(Facade),亦称“过程模式”。学校课程评价模式之一。美国教育学者斯泰克1967 年在所著《教育评价的外观》中提出。主张按照描述和判断资料来评价课程,关键的活动是在课程实施的全过程中进行观察和搜集意见,以了解人们对课程的不同看法。这种模式不限于检查教学的成果,重视描述和判断教学过程中各种复杂、动态的现象和事物。

适用场景

1>设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。
2>开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。
3>维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。

优点

1>实现了子系统与客户端之间的松耦合关系。
2>客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。

例子

举个做项目的例子,假设做一个需要经过四个步骤:需求分析、设计方案、写代码、测试。做过项目的都知道,每一步都很复杂。对于这项目,就可以使用外观模式。可以定义一个高层接口,比如名为Programmer的类,里面有一个名为Run的函数。客户只需调用这个Run函数就可以让他完成一个项目,至于Run函数内部的具体操作,客户无需知道。下面给出代码

代码

#include "stdafx.h"

#include <iostream>
using namespace std;

class Requestanls
{
public:
    void analysis(){
        cout <<"需求分析" <<endl;
    }
};

class Designsche
{
public: 

    void design() {
        cout << "设计方案" <<endl;
    }
};

class WriteCode
{
public:

    void write() {
        cout << "写代码" <<endl;
    }
};

class Test
{
public:

    void test() {
        cout << "测试" <<endl;
    }
};

//程序员,ha 很形象
class Programmer
{
public:

    Programmer() {}
    ~Programmer() {}
    void Run() {
        m_Requestanls->analysis();
        m_Designsche->design();
        m_WriteCode->write();
        m_Test->test();
    }

private:

    Requestanls* m_Requestanls;
    Designsche* m_Designsche;
    WriteCode* m_WriteCode;
    Test* m_Test;
};


int main()
{

    Programmer a_Programmer;
    a_Programmer.Run();
    return 0;
}

猜你喜欢

转载自blog.csdn.net/breakpoints_/article/details/80256718