读书人

深入显出设计模式七Adapter模式(结

发布时间: 2012-10-31 14:37:31 作者: rapoo

深入浅出设计模式七——Adapter模式(结构型)

?将两个不兼容的类或者说没有关系的类纠合在一起使用。就要在使用中间类,这个类即指适配器类。
如:有两种类打方形桩类和打圆形桩类。现在我们即需要打方形桩又需要打圆形桩。那么需要利用继承和组合的特性来创建适配器类。
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");}}

??

深入显出设计模式七——Adapter模式(结构型)

图分别对应上面的两段代码.

对于采用继承和组合来完成的适配叫对象适配,就是UML的第一个图.

后面的叫类适配,UML图中的第二个图

读书人网 >软件开发

热点推荐