设计模式--Adapter(适配器)
2013-01-30 15:44
253 查看
适配器模式定义: 将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份.
在上面代码中,RoundPeg属于Adaptee,是被适配者.PegAdapter是Adapter,将Adaptee(被适配者RoundPeg)和Target(目标SquarePeg)进行适配.实际上这是将组合方法(composition)和继承(inheritance)方法综合运用.
PegAdapter首先继承SquarePeg,然后使用new的组合生成对象方式,生成RoundPeg的对象roundPeg,再重载父类insert()方法。从这里,你也了解使用new生成对象和使用extends继承生成对象的不同,前者无需对原来的类修改,甚至无需要知道其内部结构和源代码.
进一步使用
上面的PegAdapter是继承了SquarePeg,如果我们需要两边继承,即继承SquarePeg 又继承RoundPeg,因为Java中不允许多继承,但是我们可以实现(implements)两个接口(interface)
public class RoundPeg { public void insertIntohole(String msg) { System.out.println("RoundPeg insertIntoHole():" + msg); } } public class SquarePeg { public void insert(String str) { System.out.println("SquarePeg insert():" + str); } } public class PegAdapter extends SquarePeg { private RoundPeg roundPeg; public PegAdapter(RoundPeg peg) { this.roundPeg = peg; } public void insert(String str) { roundPeg.insertIntoHole(str); } }
在上面代码中,RoundPeg属于Adaptee,是被适配者.PegAdapter是Adapter,将Adaptee(被适配者RoundPeg)和Target(目标SquarePeg)进行适配.实际上这是将组合方法(composition)和继承(inheritance)方法综合运用.
PegAdapter首先继承SquarePeg,然后使用new的组合生成对象方式,生成RoundPeg的对象roundPeg,再重载父类insert()方法。从这里,你也了解使用new生成对象和使用extends继承生成对象的不同,前者无需对原来的类修改,甚至无需要知道其内部结构和源代码.
进一步使用
上面的PegAdapter是继承了SquarePeg,如果我们需要两边继承,即继承SquarePeg 又继承RoundPeg,因为Java中不允许多继承,但是我们可以实现(implements)两个接口(interface)
public interface IRoundPeg { public void insertIntoHole(String msg); } public interface ISquarePeg { public void insert(String str); } public class SquarePeg implements ISquarePeg { public void insert(String str) { System.out.println("SquarePeg insert():" + str); } } public class RoundPeg implements IRoundPeg { public void insertIntohole(String msg) { System.out.println("RoundPeg insertIntoHole():" + msg); } } public class PegAdapter implements IRoundPeg, ISquarePeg { private RoundPeg roundPeg; private SquarePeg squarePeg; // 构造方法 public PegAdapter(RoundPeg peg) { this.roundPeg = peg; } // 构造方法 public PegAdapter(SquarePeg peg) { this.squarePeg = peg; } public void insert(String str) { roundPeg.insertIntoHole(str); } }还有一种叫Pluggable Adapters,可以动态的获取几个adapters中一个。使用Reflection技术,可以动态的发现类中的Public方法。
相关文章推荐
- Java设计模式(一) Adapter(适配器)模式及I/O实例引申
- Java设计模式之适配器(Adapter)
- 设计模式之适配器Adapter
- 设计模式之适配器(adapter)模式
- 设计模式----Adapter(适配器)
- Android设计模式之适配器(Adapter)模式
- Java读源代码学设计模式:适配器Adapter
- Java23种设计模式--Adapter(适配器)
- [设计模式](五):适配器模式(Adapter)[类适配器、对象适配器、接口适配器]
- 设计模式(5)--Adapter 适配器
- 设计模式学习之---Adapter(适配器)模式
- 设计模式学习笔记——适配器(Adapter)模式
- 设计模式》学习笔记--适配器Adapter
- JAVA设计模式(DESIGN PATTERNS IN JAVA)读书摘要 第1部分接口型模式——第3章 适配器(Adapter)模式
- 设计模式之适配器(Adapter)模式
- 《Java与模式》学习笔记:设计模式——适配器(Adapter)模式
- 大家都来设计模式---适配器(Adapter)模式
- 设计模式袖珍版 连续转载之 - Adapter(适配器)
- Java设计模式透析之 —— 适配器(Adapter)
- Java设计模式透析之 —— 适配器(Adapter)