外观模式百度定义
外观模式(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;
}