以前写过一些设计模式的博客,今天回过头看了看,竟然全是代码。还是不太好理解,毕竟这些博客都是从博客园搬家过来的,有些格式都出错了。今天准备重新写一次适配器模式,采用好理解的方式。在书上看了一个例子,感觉讲的很不错,贴出来分享一下:
看看这三张照片应该对适配器模式有一个完整的认识了(我将这三张照片对应的代码上传到附件里了(AdapterPatternA---C)),接下来我通过一个小故事讲述一下适配器模式:
我先讲个故事:狗狗王国有很多的狗狗,鼠鼠王国发生了饥荒,很多鼠鼠都迁移到了狗狗王国,现在狗狗王国的大街上可以看到很多的鼠鼠,为了统一,现在需要一个适配器将鼠鼠们可以像狗狗们那样在狗狗王国自在的生活。 适配器类 实现(implements)目标接口(Dog),依赖要转化的接口(Mouse)。
鼠鼠们的接口(因为鼠鼠有很多种类,比如说小白鼠,小胖鼠神马的):老鼠只能nagnag的叫:
package com.wjy.mouse; public interface Mouse { public void nag(); }
泡泡鼠来到了狗狗王国:
package com.wjy.mouse; public class BubleMouse implements Mouse{ @Override public void nag() { // TODO Auto-generated method stub System.out.println("I am actually a BubleMouse."); } }
狗狗王国遵循的接口:
package com.wjy.Dog; public interface Dog { public void speak(); }
适配器登场,将鼠鼠是配成狗狗:
package com.wjy.adapter.mouseToDog; import com.wjy.Dog.Dog; import com.wjy.mouse.Mouse; public class AdapterMouseToDog implements Dog{ private Mouse mouse; public AdapterMouseToDog(Mouse mouse){ this.mouse=mouse; } @Override public void speak() { // TODO Auto-generated method stub mouse.nag(); } }
这样一来,泡泡鼠鼠就可以在狗狗王国快乐的生活了:
package start; import com.wjy.Dog.Dog; import com.wjy.adapter.mouseToDog.AdapterMouseToDog; import com.wjy.mouse.BubleMouse; import com.wjy.mouse.Mouse; public class start { public static void main(String[] args){ Mouse mouse=new BubleMouse(); Dog dog=new AdapterMouseToDog(mouse); dog.speak(); } } /** * 看吧,现在就可以像Dog一样使用Mouse了。给人的感觉就是通过适配器将mouse转化为了dog。 */
通过以上例子,可以看出来。适配器类中我们使用了组合。这也是为什么伟大的《Java编程思想》中说的,”如果不是为了上转型,还是提倡使用组合而非继承“的原因。毕竟组合优于继承的。
关于组合优于继承的一篇博客大家可以参考一下:http://www.cnblogs.com/shipengzhi/articles/2086419.html
相关推荐
NULL 博文链接:https://lizhao6210-126-com.iteye.com/blog/1753041
浅析Java设计模式【2】——适配器
设计模式——适配器模式 适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口.Adapter Pattern使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 应用场景:系统数据和
JAVA设计模式总结之23种设计模式 一:设计模式之六大原则 总原则:开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。 1.Abstract Factory(抽象工厂模式) 2.Adapter(适配器模式)......
走进设计模式之——适配器模式 (Adapter) 对应代码
书名: 设计模式可复用面向对象软件的基础 英文原书名: Design Patterns:Elements of Reusable Object-Oriented software 作者: Erich Gamma 等 译者: 李英军 马晓星 蔡敏 刘建中 书号: 7-111-07575-7 页码: 254 定价...
对象的克隆——原型模式,复杂对象的组装与创建——建造者模式,不兼容结构的协调——适配器模式,处理多维度变化——桥接模式,树形结构的处理——组合模式,扩展系统功能——装饰模式,深入浅出外观模式,实现对象...
C#设计模式(23种设计模式) 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器...
pathtodriver——适配器驱动程序的寻找路径,“”表示在当前目录下(*.BGI) enum graphics_driver{DETECT,CGA,MCGA,EGA,EGA64,………,VGA,PC3270}; DETECT——自动检测所用显示适配器的类型,将相应的驱动程序装入,...
七个结构型模式 七个结构型模式 适配器模式-Adapter Pattern 不兼容结构的协调——适配器模式(一) 不兼容结构的协调——适配器模式(二) 不兼容结构的协调——适配器模式(三) 不兼容结构的协调——适配器模式...
java和设计模式ppt包含工厂模式、建造模式、原始模型模式、单例模式、结构模式、适配器、桥梁模式、合成模式、装饰模式、门面模式、享元模式、代理模式、行为模式、解释器模式、迭代子模式、调停者模式、备忘录模式...
目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式
4.1AdapterPattern(适配器模式) 96 4.1.1定义 96 4.1.2现实中的实例——电脑电源适配器 97 4.1.3C#实例——化学数据银行 98 4.1.4Java实例——清洁系统 102 4.1.5优势和缺陷 104 4.1.6应用情景 104 4.2...
4.1AdapterPattern(适配器模式) 96 4.1.1定义 96 4.1.2现实中的实例——电脑电源适配器 97 4.1.3C#实例——化学数据银行 98 4.1.4Java实例——清洁系统 102 4.1.5优势和缺陷 104 4.1.6应用情景 104 4.2...
适配器模式(Adapter Pattern)桥接模式(Bridge Pattern)过滤器模式(Filter、Criteria Pattern)组合模式(Composite Pattern)装饰器模式(Decorator Pattern)外观模式(Facade Pattern)享元模式(Flyweight ...
1.2 Smalltalk MVC中的设计模式 1.3 描述设计模式 1.4 设计模式的编目 1.5 组织编目 1.6 设计模式怎样解决设计问题 1.7 怎样选择设计模式 1.8 怎样使用设计模式 第二章 实例研究:设计一个文档编辑器 2.1 设计问题...
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...