23种设计模式-适配器模式
Posted yppaopao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了23种设计模式-适配器模式相关的知识,希望对你有一定的参考价值。
实例分析: 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种设计模式-适配器模式的主要内容,如果未能解决你的问题,请参考以下文章