门面模式和代理模式区别(2种模式对比分析)
程序员文章站
2023-11-21 18:38:10
设计模式之门面模式(java实现) 小王今天挺勤奋,在认证的写着代码,这时领导电话来了,小王啊到我办公室来一趟。小王心里忐忑着走进了办公室。领导笑嘻嘻的告诉了小王一个好活,就是让小王组建一个项目组,做...
设计模式之门面模式(java实现)
小王今天挺勤奋,在认证的写着代码,这时领导电话来了,小王啊到我办公室来一趟。小王心里忐忑着走进了办公室。领导笑嘻嘻的告诉了小王一个好活,就是让小王组建一个项目组,做一个领导很重视的项目“飞天”,小王被任命为项目经理。
小王开了新的工作,首先要选择一个产品经理,再就是要招几个开发和测试工程师。我们分析下这个需求,设计类图如下:
设计类图
通过分析,我们需要一个项目的抽象接口和对应的一个具体实现类,还有一个pm类来处理项目中的其他事情,代码实现如下:
飞天项目的设计代码
上面的例子就是一个门面设计模式,我们看看门面模式的定义:
门面模式(facade pattern):要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行,门面模式提供一个高层的接口,使得子系统更易于使用。门面模式也叫做外观模式,通用类图如下:
门面模式的通用类图
其中的角色分析,
1、faceda门面角色:客户端和这个门面直接交互,门面知道子系统的多有功能和责任。
2、subsystem子系统,可以用于一个或者多个子系统,子系统不知道门面的存在。
我们来写一下通用的代码,首先定义三个子系统subsystema,subsystemb和subsystemc
多个子系统
再定义一个门面类,对外提供接口:
门面类
门面模式的优缺点:
1、优点:减少系统之间的相互依赖,提高安全性和灵敏性。
2、缺点:不符开闭原则,对修改关闭,对扩展开放。
门面模式和代理模式的不同:
门面模式为子系统中的一组接口提供一个统一的高层接口,简化了系统的使用;
代理模式为其他对象提供一种代理以控制对这个对象的访问。