定义
门面模式是比较常用的一种设计模式,在 GoF 《设计模式》书中,门面模式是这样定义的:
门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。
门面模式也有的书叫外观模式, 它提供一个高层次的接口,让子系统更易于使用。门面模式用一个门面类来处理子系统的复杂关系,门面类提供简单的Api接口供客户端调用。
高内聚,松耦合。安全。
优点
减少系统的相互依赖
提高了灵活性
提高安全性
适用场景
解决易用性问题。为访问一系列复杂的子系统提供一个统一的、简单的入口,可以使用外观模式;
客户端与多个子系统之间存在很大依赖,但在客户端编程,又会增加系统耦合度,且使客户端编程复杂,可以使用外观模式。
角色
Facade(外观角色):外观角色可以知道多个相关子系统的功能,它将所有从客户端发来的请求委派给相应的子系统,传递给相应的子系统处理。
SubSystem(子系统角色):子系统是一个类,或者由多个类组成的类的集合,它实现子系统具体的功能。
代码示例
class ILetterProcess
{
public:
ILetterProcess(void);
virtual ~ILetterProcess(void);
virtual void WriteContext(string context) = 0;
virtual void FillEnvelope(string address) = 0;