
设计模式 - 9) 外观模式
发布日期:2021-05-13 19:47:08
浏览次数:17
分类:博客文章
本文共 1572 字,大约阅读时间需要 5 分钟。
比如开一台设备需要按顺序给显示器通电、亮灯、发出声音。
在使用外观模式前,客户端直接调用通电、亮灯、发出声音。在这样的情况下,后续如果流程发生变化,比如不需要发出声音或声音需要在亮灯之前,就需要修改客户端的代码,如果客户端多处调用,就需要修改多处。
public class SubSystemOne{ public void MethodOne() { Console.WriteLine("子系统方法一"); }}public class SubSystemTwo{ public void MethodTwo() { Console.WriteLine("子系统方法二"); }}public class SubSystemThree{ public void MethodThree() { Console.WriteLine("子系统方法三"); }}// 业务调用SubSystemOne one = new SubSystemOne();one.MethodOne(); SubSystemTwo two = new SubSystemTwo();two.MethodTwo();
使用外观模式以后,业务系统在启动的时候只需要按下开关,由开关去触发通电、亮灯、发出声音的操作。业务端的代码只需要按下开关。后续如果流程发生变化,只需要修改 Facade 类。
public class SubSystemOne{ public void MethodOne() { Console.WriteLine("子系统方法一"); }}public class SubSystemTwo{ public void MethodTwo() { Console.WriteLine("子系统方法二"); }}public class SubSystemThree{ public void MethodThree() { Console.WriteLine("子系统方法三"); }}public class Facade{ SubSystemOne one; SubSystemTwo two; SubSystemThree three; public Facade() { one = new SubSystemOne(); two = new SubSystemTwo(); three = new SubSystemThree(); } public void MethodA() { Console.WriteLine("\n方法组A:"); one.MethodOne(); two.MethodTwo(); } public void MethodB() { Console.WriteLine("\n方法组B:"); two.MethodTwo(); three.MethodThree(); }}// 业务调用Facade f = new Facade();f.MethodA(); f.MethodB();
可用于如果 新系统 需要调用 遗留代码 中逻辑比较复杂的代码时,可使用外观模式,由 Facede 类去封装复杂的逻辑,并提供简单的接口给新系统使用。
发表评论
最新留言
很好
[***.229.124.182]2025年04月19日 05时33分16秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
spring的值注入与组件扫描
2019-03-10
C#跨窗体程序调用方法的具体操作
2019-03-10
抖音发布黄金时间段,抖音上热门最佳时间
2019-03-10
我的图床~
2019-03-10
Thymeleaf sec:authorize 标签不生效
2019-03-11
Iterable与Iterator
2019-03-11
关于WebView当前地址问题的疑惑
2019-03-11
Python机器学习(九十二)Pandas 统计
2019-03-11
SecSolar:为代码“捉虫”,让你能更专心写代码
2019-03-11
链上钱包的博彩雷区
2019-03-11
GRUB2
2019-03-11
微信JS-SDK DEMO页面和示例代码
2019-03-11
GridView自定义删除操作
2019-03-11
一张图搞定RPC框架核心原理
2019-03-11
Scala中的包
2019-03-11
他来了他来了,他带着云栖大会的免费门票走来了
2019-03-11
获取linux 主机cpu类型
2019-03-11
Android Studio updating indices 一直刷新和闪烁
2019-03-11
pwntools编写技巧
2019-03-11