首页 / 设计模式 / java设计模式(八)——适配器模式
java设计模式(八)——适配器模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java设计模式(八)——适配器模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2941字,纯文字阅读大概需要5分钟。
内容图文
适配器模式( Adapter Pattern )又叫做变压器模式,它的功能是将一个类的接口变成客户端所期望
的另一种接口,从而使原本因接口不匹配而导致无法在一起工作的两个类能够一起工作 ,属于结构型设
计模式。
如我们常见的充电器,变压器
角色:
目标角色:接口,如5v或9v的手机
源角色:需要转换的,如220v的电压
适配器:将源角色转换目标角色的实例,如5v/9v的充电器
适配器有三种形式:类适配器,对象适配器,接口适配器
案例:
1、类适配器
类图:
适配器继承AC220V类,实现DC5V接口
接口:DC5V
public interface DC5V { int output5v(); }
源角色:AC220V类
public class AC220V { public int output220v(){ System.out.printf("输出电压:%dv\n",220); return 220; } }
适配器:
public class Adapter extends AC220V implements DC5V { @Override public int output5v() { int output220v = super.output220v(); int output5v = output220v / 44; System.out.printf("转换:%dv电压 ——》 %d v电压 \n",output220v,output5v); return output5v; } }
测试:
public class Test { public static void main(String[] args) { Adapter adapter = new Adapter(); int output5v = adapter.output5v(); System.out.printf("输入电压:%dv",output5v); } }
输出:
输出电压:220v 转换:220v电压 ——》 5 v电压 输入电压:5v
2、对象适配器
和类适配器的区别是,对象适配器采用的是组合方式代替继承方式
那么这里的适配器就是这样写:
public class Adapter implements DC5V { private AC220V ac220V; public Adapter(AC220V ac220V){ this.ac220V = ac220V; } @Override public int output5v() { int output220v = ac220V.output220v(); int output5v = output220v / 44; System.out.printf("转换:%dv电压 ——》 %d v电压 \n",output220v,output5v); return output5v; } }
3、接口适配器:
假如目标对象是5v,12v,24v,36v,48v等,那我们的各种适配器就需要空实现很多方法,
例如:
接口:
public interface DC { int output5v(); int output12v(); int output24v(); int output48v(); }
48v适配器:
public class A48vAdapter implements DC { @Override public int output5v() { return 0; } @Override public int output12v() { return 0; } @Override public int output24v() { return 0; } @Override public int output48v() { return 0; } }
每个适配器会有很多空方法,所以加上一个抽象的适配器
public abstract class AbstractAdapter implements DC { public AC220V ac220V; public AbstractAdapter(AC220V ac220V){ this.ac220V = ac220V; } @Override public int output5v() { return 0; } @Override public int output12v() { return 0; } @Override public int output24v() { return 0; } @Override public int output48v() { return 0; } }
让其他适配器继承抽象适配器
public class A5vAdapter extends AbstractAdapter { public A5vAdapter(AC220V ac220V) { super(ac220V); } @Override public int output5v() { int output220v =super.ac220V.output220v(); int output5v = output220v / 44; System.out.printf("转换:%dv电压 ——》 %d v电压 \n",output220v,output5v); return output5v; } }
public class A24vAdapter extends AbstractAdapter { public A24vAdapter(AC220V ac220V) { super(ac220V); } @Override public int output24v() { int output220v =super.ac220V.output220v(); int output24v = 24; System.out.printf("转换:%dv电压 ——》 %d v电压 \n",output220v,output24v); return output24v; } }
优点:提高代码的扩展性,符合开闭原则。
内容总结
以上是互联网集市为您收集整理的java设计模式(八)——适配器模式全部内容,希望文章能够帮你解决java设计模式(八)——适配器模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。