设计模式之适配器模式Java实现
2017-05-10 00:39
309 查看
设计模式之适配器模式Java实现
适配器模式(Adapter Pattern)意图:
将一个类的接口转换客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
分类:
结构型模式
结构型模式(Structural Pattern): 描述如何将类或者对象结合形成一个更大的结构。
别名:
Wrapper–包装器
适用性:
1.你想使用一个已经存在的类,而它的接口不符合你的需求。
1. 你想创建一个可以复用的类,该类可以与其他不相关的类和不可预见的类(那些接口可能不一定兼容的类)协同工作。
2. (仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以及匹配到它们的接口。对象Adapter可以适配它的父类接口。
适配器分为类适配器和对象适配器
类适配器示例:
示例代码:
public interface Voltage5vInterface { public void connect5v(); } public class Voltage220v{ public void connect220v() { System.out.print("接通220v电源,"); } } public class PowerAdapter extends Voltage220v implements Voltage5vInterface{ @Override public void connect5v() { connect220v(); System.out.print("将220v电源转化为5v电源,"); } } public class Phone { private Voltage5vInterface voltage5v; public Phone(Voltage5vInterface voltage5v){ this.voltage5v = voltage5v; } public void charge(){ voltage5v.connect5v(); System.out.println("已经接通电源,手机开始充电"); } } public class AdapterPatternDemo { public static void main(String[] args) { PowerAdapter adapter = new PowerAdapter(); Phone phone = new Phone(adapter); phone.charge(); } }
运行结果
接通220v电源,将220v电源转化为5v电源,已经接通电源,手机开始充电
对象适配器示例:
类图
示例代码
public interface Voltage5vInterface { public void connect5v(); } public class Voltage220v{ public void connect220v() { System.out.print("接通220v电源"); } } public class PowerAdapter implements Voltage5vInterface{ private Voltage220v Voltage220v; public PowerAdapter(Voltage220v voltage220v) { this.Voltage220v = voltage220v; } @Override public void connect5v() { Voltage220v.connect220v(); System.out.print("将220v电源转化为5v电源"); } } public class Phone { private Voltage5vInterface voltage5v; public Phone(Voltage5vInterface voltage5v){ this.voltage5v = voltage5v; } public void charge(){ voltage5v.connect5v(); System.out.println("已经接通电源,手机开始充电"); } } public class AdapterPatternDemo { public static void main(String[] args) { Voltage220v voltage220v = new Voltage220v(); PowerAdapter adapter = new PowerAdapter(voltage220v); Phone phone = new Phone(adapter); phone.charge(); } }
运行结果:
接通220v电源将220v电源转化为5v电源已经接通电源,手机开始充电
类图
示例代码:
//接口:电脑接口 public interface ComputerInterface { void USB(); } public class XiaomiPhone { public void xiaoMiInterface(){ System.out.println("小米手机的数据接口"); } } public class SamsungPhone { public void samungInterface(){ System.out.println("三星手机的数据接口"); } } //三星手机数据线适配器 public class SamungDataWireAdapter extends SamsungPhone implements ComputerInterface { @Override public void USB() { System.out.print("使用三星数据线连接"); super.samungInterface(); } } //小米手机数据线适配器 public class XiaomiDataWireAdapter extends XiaomiPhone implements ComputerInterface { @Override public void USB() { System.out.print("使用小米数据线连接"); super.xiaoMiInterface(); } } public class AdapterPatternDemo { public static void main(String[] args) { ComputerInterface computer =new SamungDataWireAdapter(); computer.USB(); computer=new XiaomiDataWireAdapter(); computer.USB(); } }
运行结果
使用三星数据线连接三星手机的数据接口使用小米数据线连接小米手机的数据接口
优先使用(对象)组合,而非(类)继承
相关文章推荐
- 设计模式--适配器模式--Java实现
- 23种经典设计模式的java实现_2_适配器模式
- 设计模式之适配器模式(三种实现) JAVA
- Java设计模式中适配器模式的实现方法
- 设计模式之第15章-适配器模式(Java实现)
- 设计模式之桥接模式+适配器模式Java实现
- java设计模式学习笔记5 适配器模式几种实现方式
- 23种经典设计模式的java实现_2_适配器模式
- Java设计模式之------(Adapter)适配器模式实现
- Java实现设计模式之适配器模式
- java语言实现结构型设计模式—适配器模式
- 用Java实现的设计模式系列(1)-Factory
- 设计模式:用Java动态代理实现AOP
- GoF设计模式学习之一:单例模式(Java实现)
- 23种经典设计模式的java实现_4_生成器模式
- Java设计模式之适配器模式
- 23种经典设计模式的java实现_5_职责链模式
- 用Java实现的设计模式系列(3)--Builder
- 设计模式与VB .net实现 适配器模式
- 用Java实现的设计模式-Factory