- 浏览: 753411 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (241)
- 个人思考 (1)
- 数据库 (5)
- java基础 (32)
- 软件工程 (2)
- zk开源框架 (15)
- 设计模式 (25)
- javascript (12)
- css (9)
- UML (2)
- CMMI软件需求 (3)
- CMMI软件设计 (2)
- CMMI软件实现 (1)
- CMMI软件测试 (1)
- 正则表达式 (4)
- 系统日志配置 (4)
- 应用服务器 (1)
- spring (7)
- XML (6)
- java web (10)
- Ajax (3)
- RichFaces (14)
- 问题 (1)
- 评论文章 (2)
- fushioncharts (2)
- MAVN (4)
- jquery (26)
- Ext js学习 (2)
- 学习心得 (2)
- CSS兼容问题 (3)
- XSL-FOP (1)
- Quartz (0)
- OSGI (1)
- spring--security (6)
- apache tools (1)
- eclispe 小技巧 (2)
- Ant (1)
- 杂记 (1)
- spring3系列 (5)
- java cache (4)
- EffectiveJava (2)
- 代码重构 (0)
最新评论
-
psz6696:
可以说是超级简单的Demo了,可惜没有演示设值注入和构造注入两 ...
模拟spring中的ClassPathXmlApplicationContext类的实现 -
ziyourJava:
[flash=200,200][img][url][list] ...
spring security进级篇 V 自定义标签控制显示 -
ztw1122:
...
zk组件开发指南(目录) -
zjysuv:
容我说一句 在座的各位都是垃圾 spring 3.2以后的@C ...
三. spring mvc 异常统一处理 -
chengwu1201:
二 基于Spring的异常体系处理
适配器模式通俗的说是将两个联系不密切的类或类与接口通过另一个类做为纽带将两个类或类与接口联系起来。
举个简单的例子:中国制造的笔记本电源插孔可能是两个的,而美国的电源都是三个插孔的,如何让中国的笔记本在美国正常工作。我们就拿个适配器在他们之间转化一下,这样就能正常工作了。就是把不适应的接口通过第三个纽带让他们适合,能正常通信,这就是适配器模式。
适配器模式的宗旨就是,保留现有类所提供的服务,向客户提供接口,以满足客户更多的期望。其中有类适配器和对象适配器。
1、类适配器
所谓的类适配器,就是在已经定义了客户的希望实现功能的接口基础上,利用已经存在的类来实现客户需要的功能。这样就可以通过继承存在的类,并实现用户接口来满足用户的期望。
客户需要的新接口是wantEnglishToChinses(String Englsih);而原接口提供的类中的接口是EnglishToChinsese(String English),原先的接口已通过测试,要想使原先的类适应现在的,只需做一个转换就可以了,避免了重新写类进行测试的工作。
代码的实现
(1)客户需要的新接口 /** * 接口:IEnglishToChinese * @return */ public interface IEnglishToChinese { //英文转化为汉文 public String wantEnglishToChinese(String english); } (2)原有的类中已经对该功能做了实现,但名字却不一样。 /** * 函数:EnglishToChinese * 功能:该函数实现英译汉的功能 * @return */ public class EnglishToChinese { public String englishToChinese(String english){ //具体方法省略 return english+"的中文翻译是:需要查字典"; } } (3) 采用适配器类将两个类连接起来发生关系 /** * 函数:EnglishToChineseAdapter * 功能:该函数继承了EnglishToChinese函数,并实现IEnglishToChinese的接口 * @return */ public class EnglishToChineseAdapter extends EnglishToChinese implements IEnglishToChinese { public String wantEnglishToChineseString english) { return super.englishToChinese(english); } (4) main函数中调用接口实现功能 public static void main(String[] arg){ //注意接口的调用,声明一个接口,接口指向的是一个实现类的实例。 IEnglishToChinese englishToChinese=new EnglishToChineseAdapter(); System.out.println( englishToChinese.wantEnglishToChinese("english")); }
2、对象适配器
对象适配器在版本的更新和兼容方面有着很重要的作用,客户原先的类已经实现,但新版本同样也有实现,为了做到版本的兼容,把老版本的类视为target,新版本的类为adapteer,中间建立一个adapter。
代码如下:
(1)客户需要的应用的类 /** * 类:EnglishToChinese * * @return */ public class EnglishToChinese { //英文转化为汉文 public String wantEnglishToChinese(String english){ return “this is chinese”; } } (2)新版本类 /** * 函数:NewEnglishToChinese * 功能:该函数实现英译汉的功能 * @return */ public class NewEnglishToChinese { public String englishToChinese(String english){ //具体方法省略 return english+"的中文翻译是:需要查字典"; } } (3) 采用适配器类将两个类连接起来发生关系 /** * 函数:EnglishToChineseAdapter * 功能:该函数继承了EnglishToChinese函数,并实现IEnglishToChinese的接口 * @return */ public class EnglishToChineseAdapter extends EnglishToChinese { //声明一个原有接口的类的实例对象 NewEnglishToChinese newEtoC=new NewEnglishToChinese(); //重写父类的实现函数 public String wantEnglishToChineseString english) { return old.englishToChinese(english); } } (4) main函数中调用接口实现功能 public static void main(String[] arg){ //注意接口的调用,它是new一个类的实例,采用了向上映射的关系,即前面是声明父类的一个对象,//该对象却指向子类的实例,这在程序中是很长见的 EnglishToChinese englishToChinese=new EnglishToChineseAdapter(); System.out.println(englishToChinese.wantEnglishToChinese("english")); }
3、总结
适配器模式和外观模式都包裹了一层,在实现上感觉很相似,但侧重点却不一样。适配器是将现有的类进行包装以适应已定接口的需要,而外观模式是内里实现复杂,为了方便用户的调用而通过接口方式掩盖内里实现,方便客户或子系统的应用。
发表评论
-
面向对象设计原则-------总结
2015-07-14 10:55 0单一职能原则 ----- 设计类时,尽量功能单一,粒度合 ... -
MVC设计模式理解
2009-11-16 22:11 2046常常说MVC设计模式,今天抽空整理下,感觉模式这东 ... -
面向对象设计的原则---------迪米特原则
2009-10-15 21:15 3135迪米特原则(Law of Demeter) 1、迪米特原则的 ... -
面向对象设计的原则------接口隔离原则
2009-10-12 15:50 2765接口隔离原则(Interface ... -
面向对象设计的原则------依赖倒置原则
2009-10-11 18:27 3593依赖倒置原则(Dependence Inversion Pri ... -
面向对象设计的原则------里氏代换原则
2009-10-11 14:21 2609里氏代换原则(Liskov Sub ... -
面向对象设计的原则------开闭原则
2009-10-10 23:09 2441开闭原则(Open-Closed Prin ... -
面向对象设计的原则------单一职责原则
2009-10-09 20:36 3244学习设计模式,自然会涉及面向对象的设计原则,面向对 ... -
观察者模式
2009-08-04 22:14 1148gaojie -
组合模式-------树形模式
2009-08-03 20:42 22211、组合模式定义 ... -
命令模式
2009-08-02 14:06 18141、Commad模式是一种对象行为模式,它可以对发送者(se ... -
适配器和外观模式的区别
2009-08-01 18:23 1365ok -
门面模式(外观模式)
2009-07-29 22:49 14501、外观模式 为子系统的一组接口提供一个一致的界 ... -
简单工厂模式、代理模式、策略模式如此相似
2009-07-21 22:34 4072最近,一直在看设计模式,感觉简单工厂模式、代理模式、策略模式、 ... -
策略模式
2009-07-19 23:01 1326今天学习策略模式。策略模式是这个样子的。定义一个接 ... -
jdbcTemplate分页封装
2009-07-16 09:17 41081.JdbcTemplateExtend.java publi ... -
单例模式完全剖析
2009-07-07 21:01 1310概要 单例模式是最简单的设计模式之一,但是对于Jav ... -
DAO设计模式
2009-07-04 11:40 2206虽然DAO模式已经有了好多的成熟的框架,但它仍然是 ... -
工厂模式与DAO模式
2009-07-02 21:17 4385工厂模式是设计模式中较简单的模式,但在项目的开发过 ... -
动态代理模式
2009-06-30 22:25 14852.动态代理类 Java动态代理类位于Ja ...
相关推荐
适配器模式的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进行讨论