外观模式
2021/11/24 23:10:34
本文主要是介绍外观模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
编辑说明
概述
为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,为这个接口使用
外观模式也可以叫为门面模式,应用场景也比较明确,主要在接口设计方面使用
结构图
代码实现
子系统
/// <summary> /// 子系统一 /// </summary> public class SubSystemOne { public void MethodOne() { Console.WriteLine(" 子系统方法一"); } }
/// <summary> /// 子系统二 /// </summary> public class SubSystemTwo { public void MethodTwo() { Console.WriteLine(" 子系统方法二"); } }
/// <summary> /// 子系统三 /// </summary> class SubSystemThree { public void MethodThree() { Console.WriteLine(" 子系统方法三"); } }
/// <summary> /// 子系统四 /// </summary> public class SubSystemFour { public void MethodFour() { Console.WriteLine(" 子系统方法四"); } }
外观类
/// <summary> /// 外观类 /// </summary> public class Facade { SubSystemOne one; SubSystemTwo two; SubSystemThree three; SubSystemFour four; public Facade() { one = new SubSystemOne(); two = new SubSystemTwo(); three = new SubSystemThree(); four = new SubSystemFour(); } public void MethodA() { Console.WriteLine("\n方法组A() ---- "); one.MethodOne(); two.MethodTwo(); four.MethodFour(); } public void MethodB() { Console.WriteLine("\n方法组B() ---- "); two.MethodTwo(); three.MethodThree(); } }
客户端
class Program { static void Main(string[] args) { Facade facade = new Facade(); facade.MethodA(); facade.MethodB(); Console.Read(); } }
运行结果
优势
符合迪米特法则(最少知识原则)
隐藏系统的复杂性,提供精简的访问方法,让高层模块可以更加容易地间接调用这些子系统的功能。
减少系统相互依赖
提高灵活性
提高了安全性
降低了大型软件系统中的编译依赖性,简化了系统在不同平台之间的移植过程
使用场景
阶段各种第三方SDK、开源类库的使用
为复杂的模块或子系统提供外界访问的模块。
子系统相对独立。
预防低水平人员带来的风险。
解决易用性问题
通过将多个接口调用替换为一个门面接口调用,减少网络通信成本,提高 客户端的响应速度
解决分布式事务问题。让两个不同的接口达到事务执行要引入很多机制非常复杂,要是再用一个接口包裹这来两个接口来做处理就会比较简单
缺陷
不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。
Demo
这篇关于外观模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?