适配器模式-如何把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