码迷,mamicode.com
首页 > 其他好文 > 详细

23种设计模式-适配器模式

时间:2020-06-21 09:17:03      阅读:44      评论:0      收藏:0      [点我收藏+]

标签:bsp   factor   抽象   ack   int   class   客户   ring   apt   

技术图片

 

 实例分析: USB接口的电脑 通过转换器 将普通网线输入转换成USB接口输入上网。

 需要一个网线类

Adaptee

package factory.adapter;
//要被适配的类: 网线
public class Adaptee {

    public void request(){
        System.out.println("拨号连接上网");
    }
}

一个适配器类   应用继承 属于类适配器

package factory.adapter;
//1,继承      (类适配器)
//2,组合      (对象适配器)

//真正的适配器~,需要连接USB,连接网线~
public class Adapter extends Adaptee implements NetToUsb {
    @Override
    public void handleRequest() {
        super.request();//可以上网了
    }
}

一个USB接口类

package factory.adapter;
//接口 转换器的抽象实现
public interface NetToUsb {

    //作用:处理请求, 网线=>usb
   public void  handleRequest();
}

一个电脑类

package factory.adapter;
//客户端类: 想上网,插不上网线·
public class Computer {
    //我们的电脑需要连接上我们的转接器才可以上网
    public  void  net(NetToUsb adapter){

    //上网的具体实现~, 找一个转接头
    adapter.handleRequest();

    }


    public static void main(String[] args) {
        //电脑,适配器,网线
        Computer computer = new Computer();
        Adaptee adaptee = new Adaptee();//网线
      Adapter adapter = new Adapter();//转接器

 
        computer.net(adapter);

    }
}

另一种方法:  组合的方式实现

package factory.adapter;
//1,继承      (类适配器)


//真正的适配器~,需要连接USB,连接网线~
public class Adapter2 implements NetToUsb {
    //2,组合      (对象适配器)
    private Adaptee adaptee;

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

    @Override
    public void handleRequest() {
        adaptee.request();//可以上网了
    }
}

修改computer类

package factory.adapter;
//客户端类: 想上网,插不上网线·
public class Computer {
    //我们的电脑需要连接上我们的转接器才可以上网
    public  void  net(NetToUsb adapter){

    //上网的具体实现~, 找一个转接头
    adapter.handleRequest();

    }


    public static void main(String[] args) {
        //电脑,适配器,网线
        Computer computer = new Computer();
        Adaptee adaptee = new Adaptee();//网线
       // Adapter adapter = new Adapter();//转接器

        Adapter2 adapter2 = new Adapter2(adaptee);
        computer.net(adapter2);

    }
}

例图

技术图片

 

23种设计模式-适配器模式

标签:bsp   factor   抽象   ack   int   class   客户   ring   apt   

原文地址:https://www.cnblogs.com/yppaopao/p/13169763.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!