[Head First设计模式]生活中学设计模式——外观模式
2023-09-14 09:01:01 时间
[Head First设计模式]山西面馆中的设计模式——装饰者模式
[Head First设计模式]山西面馆中的设计模式——观察者模式
[Head First设计模式]山西面馆中的设计模式——建造者模式
[Head First设计模式]饺子馆(冬至)中的设计模式——工厂模式
[Head First设计模式]抢票中的设计模式——代理模式
[Head First设计模式]云南米线馆中的设计模式——模版方法模式
[Head First设计模式]餐馆中的设计模式——命令模式
[Head First设计模式]身边的设计模式——适配器模式
[Head First设计模式]生活中学设计模式——迭代器模式
[Head First设计模式]生活中学设计模式——组合模式
一些软件安装之后,默认的是开机启动,假如一个用户对电脑不太懂,安装一些软件,就会采用软件默认安装的方式,而这些软件默认的是开机启动的,比如:暴风影音,酷狗,qq,杀毒软件,延迟加载的服务等。这些子系统,都在你按下开机键之后,用户不用再去双击这些快捷方式,所有的操作都交给windows系统来做。
如果使用外观模式,如何来实现呢?
外观模式定义外观模式,提供一个统一的接口去访问多个子系统的多个不同的接口。
外观模式,定义了一个高层次的接口,使得子系统更容易被使用。
参与者
外观类(Facade)
知道哪些子系统负责处理哪些请求。 将客户的请求传递给相应的子系统对象处理。子系统类(SubSystem)
实现子系统的功能。 处理由外观传过来的任务。 子系统不用知道外观类。 在任何地方也没有应用外观类。1 namespace Wolfy.外观模式 3 /// summary 4 /// 外观类 5 /// /summary 6 public class Windows 8 #region 使用组合将使用到的子系统组件,全部都在这里 9 KingSoft kingSoft; 10 BaoFeng baoFeng; 11 Kugou kugou; 12 QQ qq; 13 Service services; 14 #endregion 16 public Windows(KingSoft kingSoft, BaoFeng baoFeng, Kugou kugou, QQ qq, Service services) 18 //外观将子系统中每一个组件的引用都传入它的构造函数中,然后外观把它们赋值给相应的实例变量 19 this.kingSoft = kingSoft; 20 this.baoFeng = baoFeng; 21 this.kugou = kugou; 22 this.qq = qq; 23 this.services = services; 25 public void StartWindows() 27 kingSoft.StartKingSoft(); 28 baoFeng.StartBaofeng(); 29 kugou.StartKugou(); 30 qq.StartQQ(); 31 services.StartService(); 34 }
1 namespace Wolfy.外观模式 3 class Program 5 static void Main(string[] args) 7 KingSoft kingSoft=new KingSoft(); 8 BaoFeng baoFeng=new BaoFeng(); 9 Kugou kugou=new Kugou(); 10 QQ qq=new QQ(); 11 Service services=new Service(); 12 Windows windows = new Windows(kingSoft, baoFeng, kugou, qq, services); 13 windows.StartWindows(); 14 Console.Read(); 17 }
结果:
优点
提供了一个简单且公用的接口去处理复杂的子系统,并且没有子系统的功能。 遮蔽了子系统的复杂性,避免了客户与子系统直接连接,也减少了子系统与子系统间的连接,每个子系统都有它的Facade模式,子系统Facade模式去访问其他子系统。缺点
限制了客户的自由,减少了可变性。适用性
需要复杂的子系统提供一个简单的接口。 客户与抽象的实现类中存在若干依赖。 子系统分层是必要的或架构要求的情况下。博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。
转载:http://www.cnblogs.com/wolf-sun/p/3647078.html
常用设计模式汇总,告诉你如何学习设计模式 最开始学习设计模式,是读研期间,买了本最经典的《设计模式:可复用面向对象软件的基础》,风风火火搞起来,第一遍没看懂,又来一遍,23个设计模式,前后反复看了3遍,还做了笔记,后来。。。嗯嗯。。。好像全忘了
Head First设计模式之外观模式 一、定义 外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 外观模式不只是简化了接口,也将客户从组件的子系统中解耦。 外观和适配器可以包装许多类,但是外观强调的是简化接口,而适配器是为了将接口转换成不同的接口。
设计模式之禅之设计模式-访问者模式 一:访问者模式定义 --- 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。二:访问者模式角色● Visitor 抽象访问者 抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法的参数定义哪些对象是可以被访问的。
设计模式之禅之设计模式-门面模式 一:门面模式的定义 --- 门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式 --- 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。
相关文章
- 23种设计模式之备忘录模式
- 设计模式之命令模式
- Redis集群部署的三种模式
- 【说站】java门面模式的优点
- 「设计模式 JavaScript 描述」模板方法模式
- 【设计模式 08】外观模式
- 【设计模式 09】建造者模式(生成器)
- ie11兼容性视图设置怎么能自动兼容_ie11兼容模式ie8
- 【模式基础知识】献给数值模式新手入坑前的小结
- 详解设计模式:状态模式
- Java设计模式之中介者模式
- 设计模式 | 创建型 | 建造者模式
- java和python单例模式的10种写法
- 深入理解 设计模式之工厂模式
- Go 语言实现创建型设计模式 - 工厂模式
- Calico网络模式切换
- PHP设计模式之单例模式与工厂模式
- 设计模式之备忘录模式(行为型)详解架构师
- 正则表达式模式修正符简单测试详解编程语言
- Spring isSingleton方法:判断是否定义Singleton模式
- 哨兵模式:Redis实现完美高可用(redis的哨兵机制)
- Redis过期处理提升用户体验的多线程模式(redis过期 多线程)
- 博主给小米平板5 Pro刷入PC模式:能当Win10用!
- PHP设计模式之观察者模式介绍
- 关于.NETFramework中的设计模式--应用策略模式为List排序
- php设计模式之命令模式使用示例
- C#设计模式之观察者模式实例讲解
- JavaScript设计模式之原型模式(Object.create与prototype)介绍