适配器模式-如何把usb插到插座上

前言

  • 下面所写的内容不是实际的业务场景, 也可能不符合正常的生活习惯, 或者不满足一些人的口味
  • 所写的内容包括之前的帖子,只是为了方便大家更好的记住这个设计模式,实际生活中要灵活应用
  • 设计模式重思想,要活用
  • 使用场景: 维护旧代码, spring aop ..

我们的目标:

  • 把usb插到插座上, 但是直接也插不进去, 所以我们需要一个转接头, 这个玩意儿就是我们的适配器, 他既有usb口,又有插头, 所以我们就可以通过它,把usb连接到插座上

代码实现

public interface Socket {
    /**
     * 普通插口
     */
    public void insert(Socket socket);
}
public class SocketIml implements Socket{
    /**
     * 插座上只有普通插口
     */
    @Override
    public void insert(Socket socket) {
        System.out.println("插到插座里++++++++");
    }
}
public interface Usb {
    /**
     * usb接口只能插入usb
     */
    public void insert(Usb usb);
}
public class UsbImp implements Usb{
    /**
     * usb上只有usb的接口
     */
    @Override
    public void insert(Usb usb) {
        System.out.println("插到usb里+++++++++");
    }
}
public class TransferImp implements Usb, Socket{
   
    @Override
    public void insert(Socket socket) {

    }

    /**
     * usb插到接口上, 我再转接插到插座上
     * @param usb
     */
    @Override
    public void insert(Usb usb) {
        Socket socketIml = new SocketIml();
        socketIml.insert(socketIml);
    }
}
public class UsbInSocketTest {
    /**
     * 客户要求 我只传usb, 最终你还得让我插到插座里
     */
    @Test
    public void usbInsertSocketTest(){
        Usb usb = new UsbImp(); //usb实体对象
        Usb adapter = new TransferImp();//转接器
        //usb插到转接器上最终插到插座里
        adapter.insert(usb);//插到插座里++++++++
    }
}

代码路径

https://github.com/offline7LY/designpattern/tree/master/adapter

posted @ 2018-03-16 21:49  p205  阅读(738)  评论(0编辑  收藏  举报