《HeadFirst设计模式》第七章适配器模式与外观模式-读书笔记

By | 2019年11月2日

《HeadFirst设计模式》第七章适配器模式与外观模式-读书笔记

案例代码链接:https://github.com/rainweb521/My-tutorial/tree/master/Design_patterns

什么是适配器

因为现实中到处都有适配器。比方说: 如果你需要在欧洲国家使用美国制造的笔记本电脑,你可能需要使用个交流电的适配器,适配器的作用:它位于美式插头和欧式插座的中间,它的工作是将欧式插座转换成美式插座,好让美式插头可以插进这个插座得到电力。或者也可以这么认为:适配器改变了插座的接口,以符合美式笔记本电脑的需求。

好了,这是真实世界的适配器,那面向对象适配器又是什么?其实,OO适配器和真实世界的适配器扮演着同样的角色:将一个接口转换成另一个接口,以符合客户的期望。

image-20191028082439929

正如图所示,在现有系统和厂商类之间加入一层适配器,可以在不修改原有类的基础上,实现功能。

适配器模式

客户使间适配器的过程如下:

  1. 客户通过目标接口调用适配器的方法对适配器发出请求。
  2. 适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口。
  3. 客户接收到调用的结果,但并未察觉这一切是适配器在起转换作用。

适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。

image-20191028083534152

外观模式

封装子系统的类,提供一个比较简单的接口,简化了接口,也将客户从组件的子系统中解耦,外观和适配器可以包装很多类,但是外观的意图是简化接口,而适配器的意图是将接口转换成不同的接口。

外观模式:提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。

image-20191028085243065

“最少知识”原则

最少知识( Least Knowledge)原则告诉我们要减少对象之间的交互,只留下几个“密友”。这个原则通常是这么说的:

最少知识原则:只和你的密友谈话

如何不要影响太多对象

就任何对象而言,在该对象的方法内,我们只应该调用属于以下范围的方法:

  1. 该对象本身
  2. 被当做方法的参数而传递进来的对象
  3. 此方法所创建或实例化的任何对象
  4. 对象的任何组件

模式区分

装饰者:不改变接口,但加入责任

适配器:将一个接口转成另一个接口

外观:让接口更简单

发表评论

电子邮件地址不会被公开。 必填项已用*标注