设计模式——适配器
2014-08-16 20:06
113 查看
又分为三种:
类的适配器模式:
对象的适配器模式:
接口的适配器模式:
总结:
其实,它主要是为了使不兼容的两个(多个?)接口/类一起工作。
——一起工作的意思是说,调用A接口方法m1的时候,我想实际调用B类的m1实现——B类必须有m1(就是说A接口的其中一个方法),否则也无需适配,直接重新实现A接口就行了?不是吗?
—— 接口可以有很多方法,但是目标类必须有它其中一个实现,—— 这样才能适配啊!!
—— 可以通过添加Adapter、Wrapper包装类来实现
类的适配器模式:
package designpattern.structure.adapter.classadapter; public interface ITarget { public void method1(); public void method2(); } package designpattern.structure.adapter.classadapter; public class Source { public void method1() { System.out.println("Source.method1()"); } } package designpattern.structure.adapter.classadapter; public class SourceAdapter extends Source implements ITarget { public void method2() { System.out.println("Adapter.method2()"); } } package designpattern.structure.adapter.classadapter; /* * * 类的适配模式: * 即想让没有实现ITarget接口的Source类为 ITarget 工作 * ———— 具体来说是想让ITarget在适当时候调用Source , 别的时候,则不需要(别的时候通过适配来工作) * */ public class Client { /** * @param args */ public static void main(String[] args) { ITarget target = new SourceAdapter(); target.method1(); target.method2(); } }
对象的适配器模式:
package designpattern.structure.adapter.objectadapter; public interface ITarget { public void method1(); public void method2(); } package designpattern.structure.adapter.objectadapter; public class Source { public void method1() { System.out.println("Source.method1()"); } } package designpattern.structure.adapter.objectadapter; public class Wrapper implements ITarget { private Source source; public Wrapper(Source source){ super(); this.source = source; } public void method2() { System.out.println("this is the wrapped method!"); } public void method1() { source.method1(); } } package designpattern.structure.adapter.objectadapter; /* * * 类的适配模式: * 即想让没有实现ITarget接口的Source类为 ITarget 工作 * ———— 具体来说是想让ITarget在适当时候调用Source , 别的时候,则不需要(别的时候通过适配来工作) * */ public class Client { /** * @param args */ public static void main(String[] args) { ITarget target = new Wrapper(new Source()); target.method1(); target.method2(); } }
接口的适配器模式:
package designpattern.structure.adapter.interfaceadapter; public interface ITarget { public void method1(); public void method2(); } package designpattern.structure.adapter.interfaceadapter; public abstract class Wrapper implements ITarget { public void method2() { ----- 钩子方法实现!! 一般表明暂时不想去实现 } public void method1() { } } package designpattern.structure.adapter.interfaceadapter; public class Sub1 extends Wrapper { public void method1() { System.out.println("Sub1.method1()"); } } package designpattern.structure.adapter.interfaceadapter; public class Sub2 extends Wrapper { public void method2() { System.out.println("Sub2.method2()"); } } package designpattern.structure.adapter.interfaceadapter; /* * * 接口的适配模式: * */ public class Client { /** * @param args */ public static void main(String[] args) { ITarget target = new Sub1(); target.method1(); target.method2(); target = new Sub2(); target.method1(); target.method2(); } }
总结:
其实,它主要是为了使不兼容的两个(多个?)接口/类一起工作。
——一起工作的意思是说,调用A接口方法m1的时候,我想实际调用B类的m1实现——B类必须有m1(就是说A接口的其中一个方法),否则也无需适配,直接重新实现A接口就行了?不是吗?
—— 接口可以有很多方法,但是目标类必须有它其中一个实现,—— 这样才能适配啊!!
—— 可以通过添加Adapter、Wrapper包装类来实现
相关文章推荐
- 【设计模式】之实例化适配器(Adapter)模式
- 设计模式之适配器-Adapter--适配器模式
- [OOAD]设计模式之适配器(Adapter)模式
- 设计模式之适配器
- 设计模式--适配器(Adapter)
- 设计模式之适配器(Adapter)---类对象结构型模式
- 设计模式笔记--结构型模式之一适配器 adapter
- JAVA设计模式系列之Adapter(适配器)-Java基础-Java-编程开发
- 设计模式学习(六) ------- 适配器与外观
- Dot Net设计模式—适配器、桥接与外观三模式之间的关系(转)
- Dot Net设计模式—适配器、桥接与外观三模式之间的关系
- 设计模式之Adapter(适配器)
- 设计模式之Adapter(适配器)
- 《Java与模式》学习笔记:设计模式——适配器(Adapter)模式
- Java设计模式:Adapter(适配器)
- 设计模式袖珍版 连续转载之 - Adapter(适配器)
- 设计模式之Adapter(适配器)
- 设计模式--适配器(Adapter)
- 设计模式--适配器(Adapter)
- 设计模式之Adapter(适配器)