网站建设报价单模板,公司做网站比较好的平台,中工信融网站建设,seo排名专业公司文章目录 一、概念二、角色三种形式1. 类适配器对象适配器接口适配器 优缺点优点#xff1a;缺点 一、概念
适配器模式#xff08;Adapter Pattern)又叫做变压器模式#xff0c;它的功能是将一个类的接口变成客户端所期待的另一种接口#xff0c;从而使原本接口不匹配而无… 文章目录 一、概念二、角色三种形式1. 类适配器对象适配器接口适配器 优缺点优点缺点 一、概念
适配器模式Adapter Pattern)又叫做变压器模式它的功能是将一个类的接口变成客户端所期待的另一种接口从而使原本接口不匹配而无法在一起工作的两个类能在一起工作。属于结构型模式
二、角色
适配器模一般包含三种角色 目标角色Target):也就是我们期望的接口 源角色Adaptee):存在于系统中内容满足客户需求需转换但接口不匹配的接口实例 适配器Adapter):将源角色Adaptee)转化为目标角色Target)的类实例
三种形式
场景在中国民用电都是220V交流电但我们收集使用的锂电池使用的5V直流电。因此我们给手机充电时就需要使用电源适配器来进行转换。
1. 类适配器
通过继承来实现适配器功能。
Adaptee角色需要被转换的对象AC220类表示220V交流电
public class AC220 {public int outputAC220V(){int output 220;System.out.println(输出电压outputV);return output;}
}Target角色DC5接口表示5V直流电的标准
public interface DC5 {int output5V();
}创建Adapter角色电源适配器PowerAdapter类
public class PowerAdapter extends AC220 implements DC5{Overridepublic int output5V() {int adapterInputsuper.outputAC220V();int adapterOutputadapterInput/44;System.out.println(使用Adapter输入ACadapterInputV,输出DCadapterOutputV);return adapterOutput;}
}客户端测试代码
public class Test {public static void main(String[] args) {DC5 powerAdapter new PowerAdapter();powerAdapter.output5V();}
}对象适配器
通过持有Adaptee对象实现适配器功能。具体做法Adapter类实现Target接口然后内部持有Adaptee实例然后再Target接口规定的方法内转换Adaptee。
public class PowerAdapter implements DC5 {private AC220 ac220;SuppressWarnings(all)public PowerAdapter(AC220 ac220){this.ac220 ac220;}Overridepublic int output5V() {int adapterInput ac220.outputAC220V();int adapterOutput adapterInput / 44;System.out.println(使用Adapter 输入ACadapterInputV输出DCadapterOutputV);return adapterOutput;}
}接口适配器
创建Target角色DC类
public interface DC {int output5V();int ouptut12V();int output24V();int output36V();}创建Adaptee角色AC220类
public class AC220 {public int outputAC220V() {int output220;System.out.println(输出电压220V);return output;}
}创建Adapter角色PowerAdapter类
public class PowerAdapter implements DC{private AC220 ac220;SuppressWarnings(all)public PowerAdapter(AC220 ac220){this.ac220 ac220;}Overridepublic int output5V() {int adapterInput ac220.outputAC220V();int adapterOutput adapterInput/44;System.out.println(使用Adapter输入ACadapterInputV输出DCadapterOutputV);return adapterOutput ;}Overridepublic int ouptut12V() {return 0;}Overridepublic int output24V() {return 0;}Overridepublic int output36V() {return 0;}
}客户端代码
public class Test {public static void main(String[] args) {DC adapter new PowerAdapter(new AC220());adapter.output5V();}
}优缺点
优点
能提高类的透明性和复用现有的类复用但不需要改变。目标类和适配器类解耦提高程序的扩展性。在很多业务场景中符合开闭原则。
缺点
适配器编写过程需要全面考虑可能会增加系统的复杂性。增加代码阅读难度降低代码可读性过多使用适配器会使系统代码变得凌乱。