Blog信息 |
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7594039 建立时间:2006年5月29日 |

| |
[设计模式]『蚂蚁学模式』之实例化适配器(Adapter)模式 软件技术
lhwork 发表于 2007/1/10 9:23:22 |
结构模式:描述如何将类或者对象组合在一起形成更大的结构。适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。使用场合:1)系统需要使用现有的类,而此类的接口不符合系统的需要。2)想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。这些源类不一定有很复杂的接口。3)(对对象的适配器模式而言)在设计里,需要改变多个已有的子类的接口,如果使用类的适配器模式,就要针对每一个子类做一个适配器类,而这不太实际。类/对象的适配器模式:1. com.cleversoft.designpatterns.adapter.Target.java:
500)this.width=500'>package com.cleversoft.designpatterns.adapter;500)this.width=500'>500)this.width=500'>500)this.width=500'>public interface Target 500)this.width=500'>{500)this.width=500'> public void request();500)this.width=500'>}2. com.cleversoft.designpatterns.adapter.Adaptee.java:
500)this.width=500'>package com.cleversoft.designpatterns.adapter;500)this.width=500'>500)this.width=500'>500)this.width=500'>public class Adaptee 500)this.width=500'>{500)this.width=500'>500)this.width=500'> public void specificRequest() 500)this.width=500'>{500)this.width=500'> System.out.println("Adaptee: SpecificRequest");500)this.width=500'> }500)this.width=500'>}3. com.cleversoft.designpatterns.adapter.ClassAdapter.java:
500)this.width=500'>package com.cleversoft.designpatterns.adapter;500)this.width=500'>500)this.width=500'>500)this.width=500'>public class ClassAdapter extends Adaptee implements Target 500)this.width=500'>{500)this.width=500'>500)this.width=500'> public void request() 500)this.width=500'>{500)this.width=500'> specificRequest();500)this.width=500'> }500)this.width=500'>}4. com.cleversoft.designpatterns.adapter.ObjectAdapter.java:
500)this.width=500'>package com.cleversoft.designpatterns.adapter;500)this.width=500'>500)this.width=500'>500)this.width=500'>public class ObjectAdapter implements Target 500)this.width=500'>{500)this.width=500'> private Adaptee adaptee;500)this.width=500'>500)this.width=500'>500)this.width=500'> public ObjectAdapter(Adaptee adaptee) 500)this.width=500'>{500)this.width=500'> this.adaptee = adaptee;500)this.width=500'> }500)this.width=500'>500)this.width=500'>500)this.width=500'> public void request() 500)this.width=500'>{500)this.width=500'> adaptee.specificRequest();500)this.width=500'> }500)this.width=500'>}5. com.cleversoft.designpatterns.adapter.Client.java:
500)this.width=500'>package com.cleversoft.designpatterns.adapter;500)this.width=500'>500)this.width=500'>500)this.width=500'>public class Client 500)this.width=500'>{500)this.width=500'>500)this.width=500'>500)this.width=500'> public static void main(String[] args) 500)this.width=500'>{500)this.width=500'> System.out.println("Object Adapter");500)this.width=500'> Adaptee adaptee = new Adaptee();500)this.width=500'> ObjectAdapter objectAdapter = new ObjectAdapter(adaptee);500)this.width=500'> objectAdapter.request();500)this.width=500'>500)this.width=500'> System.out.println("Class Adapter");500)this.width=500'> ClassAdapter classAdapter = new ClassAdapter();500)this.width=500'> classAdapter.request();500)this.width=500'> }500)this.width=500'>500)this.width=500'>}参考资料:1. 《Java与模式》2. Thinking in Patterns |
|
|