首页 > 代码库 > 外观模式
外观模式
外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
Facade外观类,知道哪些子系统类负责处理请求,将客户的请求代理给适当的子系统对象。
SubSystem类,子系统类集合,实现子系统的功能,处理Facade对象指派的任务。注意子类中没有Facade的任何信息,既没有对Facade对象的引用。
外观模式体现了依赖倒转原则和迪米特法则。
代码:
//Facade.h #include "stdafx.h" #include <iostream> using namespace std; class SubSystemOne { public : void MethodOne() { cout << "MethodOne!" << endl; } }; class SubSystemTwo { public : void MethodTwo() { cout << "MethodTwo!" << endl; } }; class SubSystemThree { public : void MethodThree() { cout << "MethodThree!" << endl; } }; class Facade { private : SubSystemOne * m_pSubSystemOne; SubSystemTwo * m_pSubSystemTwo; SubSystemThree * m_pSubSystemThree; public : Facade() { m_pSubSystemOne = new SubSystemOne (); m_pSubSystemTwo = new SubSystemTwo (); m_pSubSystemThree = new SubSystemThree (); } void MethodA() { cout << "方法组A" << endl; m_pSubSystemOne->MethodOne(); m_pSubSystemTwo->MethodTwo(); m_pSubSystemThree->MethodThree(); } void MethodB() { cout << "方法组B" << endl; m_pSubSystemTwo->MethodTwo(); m_pSubSystemThree->MethodThree(); } };
// FacadePattern.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "Facade.h" int _tmain (int argc , _TCHAR * argv []) { Facade facade; facade.MethodA(); facade.MethodB(); getchar(); return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。