以前写过一些设计模式的博客,今天回过头看了看,竟然全是代码。还是不太好理解,毕竟这些博客都是从博客园搬家过来的,有些格式都出错了。今天准备重新写一次适配器模式,采用好理解的方式。在书上看了一个例子,感觉讲的很不错,贴出来分享一下:
看看这三张照片应该对适配器模式有一个完整的认识了(我将这三张照片对应的代码上传到附件里了(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
相关推荐
在阅读文章《设计模式——适配器模式(adapter)》时,你可以期待了解到更多关于适配器模式的实战案例、优缺点分析以及如何在实际项目中有效利用这一模式来解决问题。同时,提供的`adapter`压缩包文件可能包含示例...
### 浅析Java设计模式【2】——适配器 #### 概念解析 适配器模式是一种常用的设计模式,其核心在于“适配”二字,即如何将一个类的接口转换成客户希望的另一个接口。该模式使得原本由于接口不兼容而不能一起工作的...
设计模式——适配器模式 适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口.Adapter Pattern使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 应用场景:系统数据和
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。刘伟先生在讲解设计模式时,通常会深入浅出地介绍这些模式的原理、应用场景以及如何有效地在实际编程中应用它们。设计模式并不是...
《设计模式——GFour》是一本深受IT从业者喜爱的经典书籍,尤其在C++开发者中具有广泛影响力。设计模式是软件工程领域中的一种最佳实践,它总结了在特定情境下解决问题的常见方法,使得代码可读性更强,复用性更高,...
### 设计模式——适配器模式(Adapter Pattern) 在软件工程领域中,设计模式是一种用于解决常见问题的标准化方法。这些模式提供了一种系统化的解决方案,帮助开发人员编写出更易于理解、维护和扩展的代码。适配器...
### 设计模式——基于C#的工程化实现及扩展 #### 概述 本书旨在向读者展示如何利用C# 2.0语法有效地实现和应用设计模式,使其不仅仅局限于简单的例子,而是能够在实际工程项目中发挥重要作用。全书分为七个部分,...
比如,适配器模式允许两个不兼容的接口协同工作;桥接模式将抽象部分与实现部分分离,使它们可以独立变化;装饰模式动态地给一个对象添加一些额外的职责;外观模式提供了一个统一的接口,用来访问子系统中的多个接口...
《设计模式——Java语言中的应用》是一本专为Java开发者深入理解面向对象设计而编写的经典书籍。设计模式是软件工程领域中经过实践验证的、解决常见问题的有效方案,它们代表了在特定上下文中,针对特定问题的最优...
在《设计模式——可复用面向对象软件的基础》这本书中,作者Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides(合称GoF)首次提出了23种面向对象设计模式。这些模式涵盖了不同设计场景,如创建型模式、...
### 设计模式实验报告——适配器模式 #### 一、引言 设计模式是一种在特定情境下解决软件设计问题的通用解决方案。它为解决常见问题提供了一种可复用的设计思路,帮助开发者构建出更加灵活、易于维护的系统。在...
### JAVA设计模式总结之23种设计模式及六大原则 #### 一、设计模式之六大原则 ##### 总原则:开闭原则(Open Close Principle) 开闭原则是设计模式中最核心的原则之一,它强调的是软件实体(类、模块、函数等)...
"设计模式之美——教你写出高质量代码"这个主题旨在帮助开发者更好地理解和应用设计模式,从而提升代码的质量和可维护性。设计模式不仅对面试有所帮助,也是职场发展中的必备技能,无论你使用哪种开发语言。 设计...