Java设计模式之适配器设计模式

在阅读《think in java》的第177页遇到这个名称

适配器设计模式分为:
  1. 类适配器
  2. 对象适配器
  3. 接口适配器

类适配器和对象适配器

应用场景:在需要使用A类中的方法时又需要使用B类中的一些功能。

public class Shipeier extends ShiperAdapter{
    public static final void main(String...args) {
        //类适配
        INormal in=new ShiperAdapter();
        //对象适配
        INormal in=new ShiperAdapter(new TypeC());
        in.ITypeC_f();
    }
}
/*
**类适配
*/
public class ShiperAdapter extends TypeC implements INormal{
    @Override
    public void INormal_f() {
        ITypeC_f();
        //System.out.println("INormal_f");
    }
}
/*
**对象适配
*/
public class ShiperAdapter implements INormal{
    private TypeC tc;
    public ShiperAdapter (TypeC tc){
        this.tc=tc;
    }
    @Override
    public void INormal_f() {
        tc.ITypeC_f();
        //System.out.println("INormal_f");
    }
}
public interface ITypeC {
    public void ITypeC_f();
}
public class TypeC implements ITypeC{
    @Override
    public void ITypeC_f() {
        System.out.println("ITypeC_f");
    }
}
public interface INormal {
    public void INormal_f();
}

ITypeC_f

接口适配器

应用场景:接口方法有很多不需要用到,若在类中全部实现导致代码复杂臃肿,用适配器类来实现所有接口方法,使其成为空方法,然后再用类继承该适配器,实现所需要的方法。

public class Shipeier extends ShixianClasser{
    public static final void main(String...args) {
        MoreIer m=new ShixianClasser();
        m.f1();
    }
}
public class ShixianClasser extends IAdapter{
    @Override
    public void f1() {
        System.out.println("ShixianClasser_f1");
    }
}
public interface MoreIer {
    public void f1();
    public void f2();
    public void f3();
    public void f4();
    public void f5();
}
public class IAdapter implements MoreIer{
    public void f1() {

    }
    public void f2() {

    }
    public void f3() {

    }
    public void f4() {

    }
    public void f5() {

    }
}

ShixianClasser_f1

猜你喜欢

转载自blog.csdn.net/figurers/article/details/79734541