java设计模式之适配器模式(6)
2014-07-29 13:46
253 查看
属于结构型模式。适配器这三个字在生活中很常见。举个最简单的例子,那就是变压器,它可以把几万伏的高压变成我们生活用电220伏。
变压器就是一种适配器。适配器模式的作用就和生活中的适配器的作用是很相似的。
总之就是将某个类的接口转换成客户端期望的另一个接口表示。
属于结构型模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式
类的适配器模式:
比如我们游戏中有一个马的类Horse,如下:
只有一个walk(行走)方法。有很多马都调用我这个walk接口(方法)。但是之后其中有一种要求马要能fly(飞行)。
这时候我们怎么办呢?最简单的方法就是,直接在Horse类中加一个fly方法。但是有个问题,我们这么一加之后所有的马都能
飞了,毕竟只有一个种马会飞。我们用适配器模式来实现。
首先确定这种马需要的接口。
适配器
这里面有个奇妙的问题 接口HorseFly中有walk方法,Horse中也有walk方法。那么AdapterFly会继承哪个方法呢?可能好多人纠结这个问题。
经测试两个都继承,就好像是把两个糅合成了一个。哈. 深入没有研究,如果有明白的同学,请留言科普一下,谢谢。
对象的适配器模式:
采用组合的方式实现,类适配器是采用继承的方式实现。看下面代码:
采用组合的方式实现,类适配器是采用继承的方式实现.
接口的适配器模式:
变压器就是一种适配器。适配器模式的作用就和生活中的适配器的作用是很相似的。
总之就是将某个类的接口转换成客户端期望的另一个接口表示。
属于结构型模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式
类的适配器模式:
比如我们游戏中有一个马的类Horse,如下:
package com.pattern.struct.adapter.cla; public class Horse {//马 public void walk(){ System.out.println("I can walk..."); } }
只有一个walk(行走)方法。有很多马都调用我这个walk接口(方法)。但是之后其中有一种要求马要能fly(飞行)。
这时候我们怎么办呢?最简单的方法就是,直接在Horse类中加一个fly方法。但是有个问题,我们这么一加之后所有的马都能
飞了,毕竟只有一个种马会飞。我们用适配器模式来实现。
首先确定这种马需要的接口。
package com.pattern.struct.adapter.cla; public interface HorseFly { public void walk(); public void fly(); }
适配器
package com.pattern.struct.adapter.cla; public class AdapterFly extends Horse implements HorseFly{ @Override public void fly() { System.out.println("I can fly..."); } }
package com.pattern.struct.adapter.cla; public class Client { /** * @param args */ public static void main(String[] args) { HorseFly adapter = new AdapterFly(); adapter.walk(); adapter.fly(); } }
这里面有个奇妙的问题 接口HorseFly中有walk方法,Horse中也有walk方法。那么AdapterFly会继承哪个方法呢?可能好多人纠结这个问题。
经测试两个都继承,就好像是把两个糅合成了一个。哈. 深入没有研究,如果有明白的同学,请留言科普一下,谢谢。
对象的适配器模式:
采用组合的方式实现,类适配器是采用继承的方式实现。看下面代码:
package com.pattern.struct.adapter.obj; import com.pattern.struct.adapter.cla.Horse; import com.pattern.struct.adapter.cla.HorseFly; public class AdapterFly implements HorseFly{ private Horse horse; public AdapterFly(Horse horse){ this.horse = horse; } @Override public void walk() { this.horse.walk(); } @Override public void fly() { System.out.println("I can fly..."); } }
采用组合的方式实现,类适配器是采用继承的方式实现.
接口的适配器模式:
package com.pattern.struct.adapter.inter; import com.pattern.struct.adapter.cla.HorseFly; public class AbstractHorse implements HorseFly{ @Override public void walk() { } @Override public void fly() { } }
package com.pattern.struct.adapter.inter; public class WalkHorse extends AbstractHorse{ @Override public void walk() { System.out.println("I can walk"); } }
相关文章推荐
- 23种经典设计模式的java实现_2_适配器模式
- 【设计模式】Java与模式 --- 适配器模式
- java设计模式之适配器模式
- Java设计模式二十:适配器模式(Adapter)
- java_23种设计模式之适配器模式
- 23种经典设计模式的java实现_2_适配器模式
- java设计模式(简例)----适配器模式
- 浅谈 java 设计模式--适配器模式(Adaptor pattern)
- java 设计模式之七-适配器模式
- 设计模式(六)----- 适配器模式(Adapter)----(JAVA版)
- Java设计模式之适配器模式
- Java设计模式 - Adapter(适配器模式)
- java设计模式----适配器模式
- JAVA设计模式——适配器模式
- 深入浅出Java设计模式之适配器模式
- Java设计模式之适配器模式
- Java设计模式——结构型模式——适配器模式
- java设计模式:适配器模式[Apater]
- Java设计模式之适配器模式
- Java设计模式构造型之适配器模式