`
风雪涟漪
  • 浏览: 506950 次
  • 性别: Icon_minigender_1
  • 来自: 大连->北京
博客专栏
952ab666-b589-3ca9-8be6-3772bb8d36d4
搜索引擎基础(Search...
浏览量:9009
Ae468720-c1b2-3218-bad0-65e2f3d5477e
SEO策略
浏览量:18385
社区版块
存档分类
最新评论

适配器模式 追MM

阅读更多

情人节快到了,应该给女朋友送礼物了。借此机会恶搞下适配器模式

引用

适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。

 

需求是,原先送给女朋友一辆自行车,作为代步工具,现在有点钱了准备升级一下,到摩托车。。。。总结。。也许它能作为代步工具,不一定是自行车,有可能是个像自行车的摩托车。。。。

 

看一下自行车接口

package adpter.demo;

public interface Bike {
	public void go();
}

 

再看看我女朋友现有的自行车

package adpter.demo;

public class RedBike implements Bike{
	public void go(){
		System.out.println("自行车 速度很慢!!!");
	}
}

 不过自行车真的太慢了。。。

 

在隆重介绍新买的摩托车。。

package adpter.demo;

public interface Moto {
	public void go();
}
 
package adpter.demo;

public class RedMoto implements Moto{

	public void go() {
		System.out.println("摩托车 速度很快!!!!!!");
	}

}

 

现在我女朋友天天上班骑自行车如下。。。。

 

package adpter.demo;

public class ChasingGirl {
	public void gotoCompany(Bike bike){
		bike.go();
	}
}
 

发现了接口是自行车,现在遇到麻烦了。。因为自行车和摩托车接口不同。。。所以我需要一个适配器来解决。

package adpter.demo;

public class MotoAdapter implements Bike{
	private Moto moto;
	public MotoAdapter(Moto moto){
		this.moto=moto;
	}
	public void go() {
		moto.go();
	}
	
}

测试一下

package adpter.demo;

public class ChasingGirl {
	public void gotoCompany(Bike bike){
		bike.go();
	}
	

	
	public static void main(String[] args){
	ChasingGirl chasingGirl = new ChasingGirl();
	chasingGirl.gotoCompany(new RedBike());
	chasingGirl.gotoCompany(new MotoAdapter(new RedMoto()));


	}
}
 

结果如下:

 

自行车 速度很慢!!!
摩托车 速度很快!!!!!!

 

已经完全符合我女朋友的需求了。

 

最后祝大家情人节快乐。

 

 

 

 

分享到:
评论
15 楼 ianzhang 2009-11-17  
<div class="quote_div">
<p> </p>
<p>看一下自行车接口</p>
<pre name="code" class="java">package adpter.demo;

public interface Bike {
<span style="background-color: #ffff99;">public void go();</span>
}</pre>
<p> </p>
<p>在隆重介绍新买的摩托车。。</p>
<pre name="code" class="java">package adpter.demo;

public interface Moto {
<span style="background-color: #ffff99;">public void go();</span>
}
</pre>
   
<p>发现了接口是自行车,现在遇到麻烦了。。因为<span style="font-size: medium;"><strong><span style="color: #ff0000;">自行车和摩托车接口不同</span></strong></span>。。。所以我需要一个适配器来解决。</p>
</div>
<p>楼主的示例中,自行车和摩托车的接口是一样的,</p>
<p>个人觉得这个例子不能说明adapter的意图,并没有起到调整接口的目的,而且<span style="color: #ff0000; font-size: medium;"><strong>类型适配</strong></span></p>
14 楼 peirubing 2009-10-29  
uml图箭头好像反了吧
13 楼 sunwenran 2009-10-23  
适配器模式的其中一种
接口适配
12 楼 zhangyou1010 2009-10-22  
看第一遍的时候不理解,再看下很好的理解了。呵呵。
11 楼 tianmo2008 2009-10-06  
呵呵,是对象适配器啊.
楼主的例子确实是对象适配器的实际的实践,
清楚的交代了适配器在旧系统中引入新功能所起的重要作用,也是适配器模式的价值所在啊。
10 楼 chensunhao 2009-09-20  
楼主的例子说的很形象,容易理解,谢谢
9 楼 yepeiwen520 2009-09-18  
写的很好,体现了面向接口编程的灵活性,也诠释了Adapter模式如何使两个不相关的接口一起协同工作。

  有的文章中描述的Adapter模式是这样写的:Adapter模式旨在改变一个接口以适应另一个接口的工作。我想了很久,没理解 改变接口 的说法,我觉得接口并没有改变啊。 这里楼主用了 转换 一词就比较容易理解了,这是个人体会,不知道有谁对 改变接口 的说法理解的比较透彻,可以分享一下~~

还有,Adapter模式与桥接模式代码结构上真是相似,可能他们的出发点或者说所解决的问题不同吧,本质区别是什么呢?
  楼主怎么理解的
8 楼 joknm 2009-09-01  
呵呵。赞同。不过这种情况是逼不得已的情况下用的吧。一开始设计用继承来搞车应该很容易扩展吧。
7 楼 piao_bo_yi 2009-08-27  


6 楼 piao_bo_yi 2009-08-27  
像桥接模式...
5 楼 andot 2009-02-13  
楼主的例子真是很妙啊,把问题一下子就说明白了!
4 楼 mewleo 2009-02-12  
静态语言的模式忘记的差不多了。
3 楼 wangneng_001 2009-02-12  
不错,很容易理解
2 楼 leeldy 2009-02-12  
赞一个,说得相当的形象。。。
向上转型这东西在这里用得很明显啊。。。
1 楼 peachtao 2009-02-12  
说得很透彻

相关推荐

    追MM与23种设计模式

    标题和描述中的“追MM与23种设计模式”巧妙地将追求恋人的社交情境与软件工程中的设计模式相联系,既生动又富有创意。这一主题不仅展现了设计模式的广泛应用,还通过日常生活的例子使复杂的概念变得易于理解。下面,...

    从追MM谈Java的23种设计模式

    标题《从追MM谈Java的23种设计模式》独特地将Java设计模式与“追女孩”的生活场景相结合,通过一系列生动的例子来解释各种设计模式的概念和使用场景。在IT行业中,这种以生活场景来比喻技术概念的方式,能帮助人们更...

    图解追mm和23种设计模式(通过追MM,图解23种设计模式,有图有例子)

    5. 适配器模式:当两个类不能兼容时,适配器允许它们协同工作。就像你调整自己的习惯,以便更好地适应MM的生活方式。 6. 桥接模式:将抽象部分与实现部分分离,使它们可以独立变化。在追MM的过程中,你可以灵活地...

    追MM与设计模式.pdf

    ### 追MM与设计模式——IT知识解析 #### 创建型模式 ##### 1. 工厂模式 (FACTORY) **定义**: 客户类和工厂类分离,消费者只需要向工厂请求所需的产品,无需关心产品的具体实现。 **示例**: 在追MM的过程中,请MM...

    追MM与设计模式的有趣见解.doc

    6. **适配器模式**:不懂粤语的你通过朋友Kent作为适配器与香港来的Sarah交流,适配器模式解决了不同接口之间的通信问题,使得原本不能协作的类可以一起工作。 7. **桥接模式**:根据情境灵活组合问候语,桥接模式...

    从追MM谈JAVA的23种设计模式

    6. **适配器模式(Adapter)**:如果你的爱好和MM的兴趣不合拍,适配器模式可以让你的爱好与她的兴趣相匹配。它使两个不兼容的接口能够协同工作。 7. **桥接模式(Bridge)**:将你的性格和追求方式分离,桥接模式...

    追MM与C++设计模式

    - **适配器模式**:类似于调整自己的行为习惯以适应对方的性格特点。 这种寓教于乐的方式不仅增加了学习的乐趣,也使抽象的设计模式概念变得更容易理解和记忆。 #### 六、结语 通过本文的解析,我们可以看到,将...

    java23种设计模式与追MM

    8. **适配器模式**:如果GG和MM的喜好不匹配,适配器模式能将两个不兼容的接口桥接起来,使他们能够协同工作。 9. **桥接模式**:GG的求爱策略和表达方式可以独立变化,桥接模式将抽象部分与实现部分分离,使它们...

    追MM与Java的23种设计模式.txt

    适配器模式是一种结构型设计模式,它使不兼容的接口能够一起工作。在追MM的场景中,这可以比喻为调整自己的行为或语言风格,以便更好地适应或匹配不同MM的喜好和个性,从而增加成功的可能性。 ### 7. Bridge(桥接...

    追MM与23种模式.doc

    《追MM与23种模式》是一篇以幽默方式介绍设计模式的文章,通过与追求女性相关的场景,生动地阐述了23种常见的设计模式。设计模式是软件工程中经过实践验证的优秀设计策略,用于解决特定场景下的复用性、灵活性和可...

    java23种设计模式与追MM.doc

    文档"java23种设计模式与追MM.doc"以生动有趣的比喻解释了这些模式,帮助初学者更好地理解和记忆。 1. **工厂模式**:就像在麦当劳或肯德基点餐,你只需要告诉服务员“四个鸡翅”,而不用关心鸡翅是如何制作的。...

    程序设计模式解说 - 追MM版

    本篇解说将以趣味的“追MM”为比喻,来阐述几种常见的创建型模式和结构型模式。 1. **工厂模式**:如同在麦当劳或肯德基点餐,你只需要告诉服务员要“四个鸡翅”,而无需关心鸡翅是如何制作的。在编程中,工厂模式...

    从追MM浅谈Java的23种设计模式

    追MM的过程可以巧妙地与设计模式联系起来。比如,单例模式就像是追求MM时的独特策略,只有一位正确的“她”;工厂方法则是根据不同情况选择不同的追求方式;建造者模式可以类比为逐步构建一段完美的表白词句;适配器...

    java23种设计模式与追MM下载地址

    《Java23种设计模式与追MM》这本书通过一种轻松幽默的方式,将复杂的软件设计模式原理与现实生活中的恋爱追求技巧相结合,让读者在享受阅读乐趣的同时,深入理解设计模式的精髓。 ### 单例模式(Singleton Pattern...

    追MM与Java的23种设计模式

    【追MM与Java的23种设计模式】这篇文章将编程中的设计模式与追求女性的场景相结合,用生动的例子解释了23种设计模式的核心概念。以下是各设计模式的详细解析: 1. **工厂模式(Factory)**:就像在麦当劳和肯德基...

    从追MM谈Java的23种设计模式.doc

    在追MM的例子中,工厂就是餐馆,不论选择麦当劳还是肯德基,你只需要告诉服务员“来四个鸡翅”。工厂模式隐藏了具体的创建过程,使代码更加灵活。 2. **建造者模式**(Builder Pattern): 建造者模式将复杂对象的...

Global site tag (gtag.js) - Google Analytics