1.设计模式学习,适配器模式
1.练习思考,demo:欧式插座是三孔的,美式插头是用于两孔插座,这时他们之间就需要一个适配器(交流电适配器)来满足需求了。
这上面有三个对象,如何定义哪个是接口,那个是对象。适配器应该定义为接口还是对象呢?先思考一分钟:大体描述下:
欧式插座定义规范是三孔的,把欧式插座定义为接口,适配器是为了衔接或链接欧式三孔插座和美式两头插头的,因此把适配器
定义为类,适配器中再适配对象(欧式插座)即定义一个,构造函数去引入欧式插座对象。那美式插头对象如何处理呢?这个思路不对呀。
大致思路再思考下:美式插头的动作是插入到交流电适配器上,然后交流电适配器再插入到欧式三孔插座上。这样思路才清晰。哪个对象的动作
关联到哪个对象上。美式插头有个动作:美式插头插入到交流电适配器上,交流适配器有个动作:交流适配器插入到欧式插座上。
对象图:美式插头->交流电适配器->欧式插座 ,由图可以看出,美式插头对于交流器和欧式插座都有相同的动作插入,这个插入由适配器来适配。
这里产生混乱的原因是因为我没有搞清楚被适配者角色,其实我觉得美式插头和欧式插座都可以定义为被适配者,比如:把美式插头定义为被适配者,
那么欧式插座就可以理解为目标角色,看你怎么看如何适应的,因为交流适配器作为了适配器。
有用的思路:从设计模式书中我有了点头绪,它是这样说的:交流适配器把欧式插座转换成了美式插座,以便让美式笔记本插头能够插入美式插座得到电力,
也可以这么说:适配器改变了插座的接口,以符合美式笔记本电脑的需求。(通过这段有用的思路我继续修改的我的代码。)
有用的思路:将一个接口转换为另一个接口,已符合客户的期望。这里我漏掉了一点,接口应该是继符合美式插头又要符合欧式插座的,应该瞻前顾后。
到目前为止通过例子:鸭子类图和插座的类图初步了解了适配器模式。
分享到:
相关推荐
适配器模式的Java实现版本,包含类适配器模式和对象适配器模式的实现,同时也包含两者的UML类图
java设计模式【之】适配器模式【源码】【场景:水和容器】 * 适配器模式,类似(亡羊补牢) * 已经存在的类(功能已经开发完成了),与新需求的功能相似,但是略有差异 * 当已经存在的方法无法满足现有需求,需要...
C#设计模式之适配器模式应用实例
设计模式之适配器模式Java版 设计模式之适配器模式Java版 设计模式之适配器模式Java版 设计模式之适配器模式Java版
[刚刚上传的demo运行有问题,重新传了个新的],这个的一个iOS的适配器模式的实例代码,目前就是一个简单的demo,后期还会更新适配器在 MVC,MVP,MVVM中的使用,demo对应着简书:https://www.jianshu.com/p/e2ebcf19098f,...
实验7 适配器模式、外观模式与模板方法模式---Java设计模式
动态代理模式 适配器模式 实现,都可以运行,有一部分注解
设计模式之适配器模式,通过实际例子讲述适配器模式的使用,原理和特点
适配器模式代码demo 适配器模式代码demo 适配器模式代码demo
适配器模式 设计模式 Adapter 还请各位大S指教
设计模式-适配器模式(讲解及其实现代码)
设计模式--适配器模式java例子
设计模式C++学习之适配器模式(Adapter)
实验七:适配器模式.rar实验七:适配器模式.rar
设计模式的适配器模式的例子,希望对大家有用
设计模式系列之适配器模式,分别以Java,Android,IOS进行讨论