类的适配器模式:
步骤一:建立一个接口 Targetable
public interface Targetable { public void method1(); public void method2(); }
步骤二:建立一个类Source(其中方法与接口中的方法相同)
public class Source { public void method1() { System.out.println("我是source中的方法1"); } }
步骤三:建立一个适配器类实现继承Source类 ,同时实现接口Targetable,达到方法的适配。
public class Adapter extends Source implements Targetable{ @Override public void method2() { System.out.println("我是方法2"); } }
步骤四:进行测试
public class Test { public static void main(String[] args) { Targetable target=new Adapter(); target.method1(); target.method2(); } }
对象的适配器模式
步骤一:建立一个接口Targetable (同上)
步骤二:建立一个类Source(其中方法与接口中的方法相同)(同上)
步骤三:建立一个对象适配器
public class Adapter implements Targetable{ private Source source; public Adapter(Source source) { super(); this.source=source; } @Override public void method1() { source.method1(); } @Override public void method2() { System.out.println("我是方法二"); } }
步骤四:测试
public class Test { public static void main(String[] args) { Source source=new Source(); Targetable target=new Adapter(source); target.method1(); target.method2(); } }
接口适配器
步骤一:建立一个接口Sourceable
//接口中定义了四个方法 public interface Sourceable { public void method1(); public void method2(); public void method3(); public void method4(); }
步骤二:建立 类Source1 Source2( 其中存在有方法与接口中的方法相同)
public class Source1 extends Adapter{ @Override public void method1() { System.out.println("这是需要的方法1"); } }
public class Source2 extends Adapter{ @Override public void method2() { System.out.println("这是需要的方法2"); } }
步骤三:建立一个接口适配器
public abstract class Adapter implements Sourceable{ @Override public void method1() { System.out.println("我是方法1"); } @Override public void method2() { System.out.println("我是方法2"); } @Override public void method3() { System.out.println("我是方法3"); } @Override public void method4() { System.out.println("我是方法4"); } }
步骤四:测试
public class Test { public static void main(String[] args) { Sourceable source1=new Source1(); Sourceable source2=new Source2(); source1.method1(); source1.method2(); System.out.println("-----------"); source2.method1(); source2.method2(); } }