- 浏览: 1229112 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
将两个不兼容的类或者说没有关系的类纠合在一起使用。就要在使用中间类,这个类即指适配器类。
如:有两种类打方形桩类和打圆形桩类。现在我们即需要打方形桩又需要打圆形桩。那么需要利用继承和组合的特性来创建适配器类。
package com.lwf.object.adapter; public class SquarePeg { public void insert(String str){ System.out.println("SquarePeg insert():" + str); } }
package com.lwf.object.adapter; public class RoundPeg { public void insertIntohole(String msg){ System.out.println("RoundPeg insertIntohole():" + msg); } }
package com.lwf.object.adapter; public class PegAdapter extends SquarePeg { RoundPeg roundPeg = null; public PegAdapter(RoundPeg roundPeg){ this.roundPeg = roundPeg; } public void insertHole(String msg){ roundPeg.insertIntohole(msg); } public static void main(String[] args) { RoundPeg roundPeg = new RoundPeg(); PegAdapter p = new PegAdapter(roundPeg); p.insert("sfjsljfsf"); p.insertHole("hole"); } }
当我们需要继承来自多个类的特性的时候,结合面向接口编程的原则:
package com.lwf.object.adapter; public interface iSquarePeg { public void insert(String str); }
package com.lwf.object.adapter; public interface iRoundPeg { public void insertIntohole(String msg); }
package com.lwf.object.adapter; public class SquarePeg implements iSquarePeg{ public void insert(String str){ System.out.println("SquarePeg insert():" + str); } }
package com.lwf.object.adapter; public class RoundPeg implements iRoundPeg{ public void insertIntohole(String msg){ System.out.println("RoundPeg insertIntohole():" + msg); } }
package com.lwf.object.adapter; public class PegAdapter implements iSquarePeg,iRoundPeg { private iSquarePeg iSquarePeg; private iRoundPeg iRoundPeg; public PegAdapter(iSquarePeg iSquarePeg,iRoundPeg iRoundPeg){ this.iSquarePeg = iSquarePeg; this.iRoundPeg = iRoundPeg; } public void insert(String str){ iSquarePeg.insert(str); } public void insertIntohole(String msg){ iRoundPeg.insertIntohole(msg); } public static void main(String[] args) { iSquarePeg iSquarePeg = new SquarePeg(); iRoundPeg iRoundPeg = new RoundPeg(); PegAdapter p = new PegAdapter(iSquarePeg,iRoundPeg); p.insert("sfjsljfsf"); p.insertIntohole("hole"); } }
图分别对应上面的两段代码.
对于采用继承和组合来完成的适配叫对象适配,就是UML的第一个图.
后面的叫类适配,UML图中的第二个图
发表评论
-
深入浅出设计模式十四——复合模式
2016-07-05 09:35 5633 -
深入浅出设计模式十一——组合模式
2016-07-05 09:31 4733 -
深入浅出设计模式十二-状态模式(行为型)
2010-07-20 16:27 1626定义: 状态模式: 允许对象在内部状态改变时改变它的行为 ... -
深入浅出设计模式十——迭代模式
2010-07-19 14:24 932我 -
代理模式\装饰模式\适配器模式区别
2010-07-16 17:16 2414代理模式\装饰模式\适配器模式它们有相似性,那么具体在什么情况 ... -
深入浅出设计模式十三——代理模式(结构型)
2010-07-16 11:29 869以下两篇文章分别讲了静态代理与动态代理 http://qu ... -
深入浅出设计模式九——模板方法模式(行为型)
2010-07-14 16:12 1028模板方法模式: 定义一个操作中的算法的骨架,而将一些步骤延迟 ... -
GRASP原则简介
2010-03-10 17:38 2405GRASP(General Responsibilit ... -
深入浅出设计模式六——封装调用(命令模式)
2010-03-08 15:35 1123命令模式: 将一个请求封装为一个对象,从而使你可用不同的请 ... -
深入浅出设计模式五——独一无二(单例模式)
2010-03-08 15:34 1094先看文章 :http://quicker.iteye.com/ ... -
深入浅出设计模式四——多区域比萨加盟店生产比萨实现(抽象工厂模式)
2010-03-05 16:17 1295有关抽象工厂文章可先看:http://quicker.itey ... -
深入浅出设计模式四——比萨店生产比萨实现(工厂方法模式)
2010-03-04 17:11 2399在http://quicker.iteye.com/blog/ ... -
深入浅出设计模式三——Beverage实现(装饰者模式)
2010-03-03 17:31 1322上图的实现代码见 ... -
深入浅出设计模式二——WeatherData设计(观察者模式)实现二
2010-03-02 17:24 1215在上文:深入浅出设计模式二——WeatherData设计(观察 ... -
深入浅出设计模式二——WeatherData设计(观察者模式)实现一
2010-03-01 14:31 1618UML详细图 良好的OO ... -
深入浅出设计模式一——Duck设计(策略模式)
2010-02-26 18:04 2150以下为针对上图所列代码: package com. ... -
深入浅出设计模式八——Facade模式(结构型)
2010-02-22 15:06 1848外观模式定义: 外观模式:提供一个统一的接口,用来访问子系统 ... -
创建型——Builder模式
2010-02-04 16:04 987UML: 如何使用: ... -
创建型(单例模式)
2010-01-26 11:39 1007package com.lwf.create.singleto ... -
创建型——工厂模式(抽象工厂)
2010-01-19 23:56 1063UML图 特例图 以图的实现代码: ...
相关推荐
第4章GoF-StructuralDesignPatterns结构型设计模式 95 4.1AdapterPattern(适配器模式) 96 4.1.1定义 96 4.1.2现实中的实例——电脑电源适配器 97 4.1.3C#实例——化学数据银行 98 4.1.4Java实例——清洁系统 ...
标题“设计模式设计模式设计模式”强调了这个主题的核心——设计模式的重要性及其反复应用。描述“设计模式设计模式设计模式设计模式设计模式设计模式”进一步突出了设计模式在软件开发中的不断重复和不可或缺的角色...
"设计模式精解"这个主题涵盖了这两本重要的书籍——《设计模式精解》和《深入浅出设计模式》,它们都是理解并掌握设计模式的重要资源。 首先,让我们来看看《设计模式精解》这本书可能涉及的关键知识点。设计模式...
《设计模式精解——GoF23种设计模式解析附C实现源码》这本书提供了深入浅出的设计模式讲解,同时通过C语言的具体实现案例,帮助读者更好地理解和应用这些模式。 #### 二、设计模式简介 设计模式是一种通用的、在...
《JAVA设计模式(中文).chm》是一部专为Java开发者准备的设计模式指南,它深入浅出地阐述了软件工程中的重要概念——设计模式。设计模式是解决常见编程问题的成熟解决方案,是经验丰富的开发者们在实践中总结出的最佳...
七个结构型模式 七个结构型模式 适配器模式-Adapter Pattern 不兼容结构的协调——适配器模式(一) 不兼容结构的协调——适配器模式(二) 不兼容结构的协调——适配器模式(三) 不兼容结构的协调——适配器模式...
《设计模式与JAVA》这本书是面向Java开发者的一本经典教程,它深入浅出地介绍了软件设计中的重要概念——设计模式。设计模式是经验丰富的软件开发人员在解决常见问题时所形成的可重用解决方案,它们是经过时间考验的...
总的来说,《HeadFirst设计模式笔记》通过`PizzaIngredientFactory`的例子,深入浅出地介绍了设计模式的重要性及其在实际编程中的应用。学习和掌握设计模式,能帮助开发者编写出更加优雅、灵活的代码,提高团队协作...
这本书深入浅出地介绍了软件工程中的核心概念——设计模式,这些模式是经验丰富的开发者在解决常见问题时总结出的最佳实践。 设计模式是对在特定情境下软件设计问题解决方案的一种描述,它们是可复用的,能够提升...
通过上述分析可以看出,《设计模式——可重用面向对象软件的要素》是一本深入浅出地介绍了设计模式的重要书籍。无论是对于初学者还是有经验的开发人员来说,这本书都能够提供有价值的指导和启发。