Java设计模式-适配器模式
1、简介
适配器模式是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。
2、适配器模式分类
-
目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 需要适配的类(Adaptee):需要适配的类或适配者类。 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。
3、代码展现-类适配器(通过继承方式实现)
场景:我电脑需要上网,但是只有网线不行得,但是需要usb插口才可以上网
网线类,能够实现上网,但是没有接口适配器
/** * @Author charles.yao * @Description 网线(能够上网-需要转化成usb) * @Date 2023/3/7 19:36 */ public class NetWorkLine { /** * 能够上网 */ public void requestNet() { System.out.println("我是网线能够上网"); } }
转换接口&&适配器
/** * 网线转换成usb */ public interface INetWorkToUsb { /** * 将网线转换成usb */ void convertToRequestNet(); } /** * @Author charles.yao * @Description 网络适配器() * @Date 2023/3/7 19:40 */ public class NetAdapter extends NetWorkLine implements INetWorkToUsb{ @Override public void convertToRequestNet() { //TODO 业务处理在进行转化 super.requestNet(); } }
电脑通过适配器才能上网
/** * @Author charles.yao * @Description 电脑上网 * @Date 2023/3/7 19:44 */ public class ComputerOnLine { /** * 电脑上网-插入适配器进行转换才能上网 * @param adapter */ public void online(INetWorkToUsb adapter){ adapter.convertToRequestNet(); } }
测试类
/** * @Author charles.yao * @Description 适配器测试类 * @Date 2023/3/7 19:45 */ public class AdapterTest { public static void main(String[] args) { ComputerOnLine computerOnLine = new ComputerOnLine(); INetWorkToUsb netAdapter = new NetAdapter(); computerOnLine.online(netAdapter); } }
4、通过类适配器方式实现
/** * @Author charles.yao * @Description 对象适配器-取消继承方式,使用构造方式一样可以 * @Date 2023/3/7 19:52 */ public class NetAdapter1 implements INetWorkToUsb{ private NetWorkLine netWorkLine; public NetAdapter1(NetWorkLine netWorkLine) { this.netWorkLine = netWorkLine; } @Override public void convertToRequestNet() { netWorkLine.requestNet(); } }
测试类
/** * @Author charles.yao * @Description 适配器测试类 * @Date 2023/3/7 19:45 */ public class AdapterTest2 { public static void main(String[] args) { ComputerOnLine computerOnLine = new ComputerOnLine(); INetWorkToUsb netAdapter = new NetAdapter1(new NetWorkLine()); computerOnLine.online(netAdapter); } }
下一篇:
职责链模式简介及使用示例