一:案例场景
生活中,比如笔记本是一个整体,看似是一件东西,实际上只是将主机和显示器组装在一起而已,对外提供一个电源按钮,当按下电源按钮的时候,启动了主机和显示器,这里的这个电源按钮就差不多是外观模式,对外只提供了一个电源按钮。
二:概念定义
外观模式(Facade)的定义:为子系统中的一组接口提供一个一致的界面,用来访问子系统中的一群接口。
三:案例解析
某文件系统管理,包括文件的读取,加密,解密,用外观模式实现该系统功能。【
具体实现如下:
//加密类 public class EncrypHelper { public void EncrypImg() { } public void EncrypStr() { } } //解密类 public class DecrypHelper { public void DecrypImg() { } public void DecrypStr() { } }//外观模式,对外接口
//定义外观类,外观模式对外接口类 public class TestFacade { EncrypHelper ehp; DecrypHelper dhp; public TestFacade() { ehp = new EncrypHelper(); dhp = new DecrypHelper(); } //处理图片 public void HandleImg() { ehp.EncrypImg(); dhp.DecrypImg(); } //处理文本 public void HandleStr() { ehp.EncrypStr(); dhp.DecrypStr(); } }//客户端调用测试
public class RunFacade { public RunFacade() { TestFacade tfa = new TestFacade(); tfa.HandleImg(); tfa.HandleStr(); } }
四:使用场景
在以下情况下可以考虑使用外观模式:
- 外一个复杂的子系统提供一个简单的接口
- 提供子系统的独立性
- 在层次化结构中,可以使用外观模式定义系统中每一层的入口,其中三层架构就是这样的一个例子。
五: 外观模式的优缺点
优点:
- 外观模式对客户屏蔽了子系统组件,从而简化了接口,减少了客户处理的对象数目并使子系统的使用更加简单。
- 外观模式实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件是紧耦合的。松耦合使得子系统的组件变化不会影响到它的客户。
缺点:
- 如果增加新的子系统可能需要修改外观类或客户端的源代码,这样就违背了”开——闭原则“(不过这点也是不可避免)。
六、 总结
外观模式,为子系统的一组接口提供一个统一的接口,该模式定义了一个高层接口,这一个高层接口使的子系统更加容易使用。并且外观模式可以解决层结构分离、降低系统耦合度和为新旧系统交互提供接口功能。
- 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
- 个人V:zp2013822
- 交流QQ :1787024563

176

被折叠的 条评论
为什么被折叠?



