设计模式 适配器模式

基本概念

适配器模式是结构形模式的一种

适配器模式很好理解 就像平常如果插头不能直接插上去时我们会使用一个转接头 而这就是适配器模式

通过继承实现适配器 (类适配器)

我们模拟电脑插网线需要一个转接头的情景
编写一个网线类

package Demo1;
//要被适配的类 网线
public class Adaptee {
    public void request(){
        System.out.println("连接网线上网");
    }
}

编写一个转接头接口和具体实现类 继承网线类使得可以调用连接网线上网

package Demo1;

public interface NetToUsb  {
    public void handleRequest();
}
package Demo1;
//适配器类 需要连接USB和网线
public class Adapter extends Adaptee implements NetToUsb {
    public void handleRequest() {
        super.request();
    }
}

编写电脑类 通过适配器上网

package Demo1;
//想上网 但是插不上网线
public class Computer {
    public void net(NetToUsb adapter){
        adapter.handleRequest();
        //上网的具体实现 找一个转接头
    }

    public static void main(String[] args) {
        Computer computer = new Computer();//电脑
        Adapter adapter=new Adapter();//转接头
        Adaptee adaptee = new Adaptee();//网线
        computer.net(adapter);
    }
}

使用组合的方式实现 对象适配器

很简单我们修改下适配器类的代码即可

package Demo1;
//组合(对象适配器)
public class Adapter2 implements NetToUsb {
    private Adaptee adaptee;

    public Adapter2(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    public void handleRequest() {
        adaptee.request();
    }
}

在创建使用适配器时将网线赋值进去即可

package Demo1;
//想上网 但是插不上网线
public class Computer {
    public void net(NetToUsb adapter){
        adapter.handleRequest();
        //上网的具体实现 找一个转接头
    }

    public static void main(String[] args) {
        Computer computer = new Computer();//电脑
        Adaptee adaptee = new Adaptee();//网线
        Adapter2 adapter2=new Adapter2(adaptee);//转接头
        computer.net(adapter2);
    }
}

总结

posted @ 2021-09-19 10:34  一个经常掉线的人  阅读(46)  评论(0)    收藏  举报