大话设计模式读书笔记--8.外观模式
外观模式的用意是为子系统提供一个集中化和简化的沟通渠道,而不是向子系统加入新的行为
生活中的例子:
一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。该电源总开关可以同时控制上述所有电器设备,电源总开关即为该系统的外观模式设计
定义
定义: 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这一接口使得这一子系统更加容易使用
结构图
Facade: 是模式的核心,指导所有子系统的功能, 可根据客户端的需求定制功能组合
SubSystemOne: 实现子系统的功能
代码实现
场景: 新手理财买基金, 通过基金经理人进行投资,而新手无须关心基金经理人具体的投资
场景分析: 新手只要关系基金的涨跌, 而无须关心基金经理人具体的投资行为
优缺点及使用场景
优点:
1.减少客户端处理的对象数目 2.对客户端屏蔽了子系统, 实现了解耦合
缺点: 增加新的子系统可能需要修改外观类或客户端的源代码,违背了“开闭原则”。
使用场景:
1.在设计初期,应该有意识的将不同的两个层分离,比如经典的mvc架构 2.子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类,使用起来困难, 增加外观模式可以提供简单的接口,减少依赖 3.一个大型系统非常难以维护和扩展,但是新的需求必须依赖其中部分功能,可以提供一个外观Facade类,让新系统与Facade对象交互
在对系统使用外观模式后,达到的效果如下图
祝:
大家生活愉快,工作顺利