Java 设计模式_适配器模式
来源:互联网 发布:算法的定义和特征 编辑:程序博客网 时间:2024/06/05 14:14
Java 设计模式_适配器模式
本文由 Luzhuo 编写,转发请保留该信息.
原文: http://blog.csdn.net/Rozol/article/details/76154881
将一个类的接口转换成期望的另一个接口,使其能够兼容使用
适配器模式分为: 对象适配器模式 / 类适配器模式 / 缺省适配模式
对象适配器: 将一个接口转成期望的另一个接口
类适配器器: 将一个类转成期望的另一个接口
缺省适配器: 为一个接口提供缺省实现,子类可以重写部分缺省实现进行具体实现
对象适配器模式
public interface OldTarget { void show1();}
public class OldTargetImpl implements OldTarget { @Override public void show1() { System.out.println("OldTargetImpl"); }}
- 以上是旧的接口和接口的实现类,但是现在需要使用新接口,我们需要将旧接口(OldTarget) 转为新接口(Target),让他们能够兼容被使用.
public interface Target { void show1(); void show2();}
public class TargetAdapter implements Target{ private OldTarget mAdaptee; public TargetAdapter(OldTarget adapter){ mAdaptee = adapter; } @Override public void show1() { mAdaptee.show1(); } @Override public void show2() { System.out.println("TargetAdapter"); }}
- 对象适配器(TargetAdapter)就在这里起到了,将OldTarget接口转为我们期望使用的Target,并使旧接口与新接口兼容被使用的
类适配器模式
public class OldClass { public void show1(){ System.out.println("OldClass"); }}
- 以上是旧的类(OldClass), 我们期望使用新的接口(ClassTarget), 需要将类转为该接口, 使其能够兼容被使用
public interface ClassTarget { void show1(); void show2();}
public class ClassAdapter extends OldClass implements ClassTarget{ @Override public void show2() { System.out.println("ClassAdapter"); }}
- 类适配器(ClassAdapter), 在这里起到了将旧的类(OldClass), 转为了我们期望使用的目标接口(ClassTarget), 并使旧类和新接口能够兼容被使用
缺省适配模式
public interface Interfaces { public abstract void show1(); public abstract void show2(); public abstract void show3(); public abstract void show4(); public abstract void show5();}
- 这个接口里定义了n个方法, 我们期望子类能够根据自身需要重写他, 而不是重写全部的未实现方法
public class InterfacesAdapter implements Interfaces{ @Override public void show1(){} @Override public void show2(){} @Override public void show3(){} @Override public void show4(){} @Override public void show5(){}}
- 缺省适配器(InterfacesAdapter),就在这起到了, 子类只需重写适配器里的部分自身所需要的方法, 对其进行实现
使用
public class Test { public static void main(String[] args) { // 对象适配器 objAdapter(); // 类适配器 classAdapter(); // 缺省适配器 defaultAdapter(); } /** * 将一个接口转成期望的另一个接口 */ private static void objAdapter() { TargetAdapter adapter = new TargetAdapter(new OldTargetImpl()); adapter.show1(); adapter.show2(); } /** * 将一个类转成期望的另一个接口 */ private static void classAdapter() { ClassAdapter adapter = new ClassAdapter(); adapter.show1(); adapter.show2(); } /** * 为一个接口提供缺省实现,子类可以重写部分缺省实现进行具体实现 */ private static void defaultAdapter(){ new InterfacesAdapter(){ public void show3() { System.out.println("Test - InterfacesAdapter"); }; }.show3(); }}
阅读全文
0 0
- java设计模式_适配器模式
- 设计模式_适配器模式(Java)
- java设计模式07_适配器模式
- Java 设计模式_适配器模式
- 设计模式_适配器模式
- 设计模式_适配器模式
- 设计模式_适配器模式
- Java设计模式_(结构型)_适配器模式
- 28_适配器设计模式
- Java 适配器设计模式
- 适配器(JAVA设计模式)
- java 适配器设计模式
- java设计模式 适配器
- Java适配器设计模式
- java适配器设计模式
- java设计模式-适配器
- java适配器设计模式
- java设计模式----适配器模式
- OSGi框架与类加载器
- excel 自动group脚本
- hdu 6035 Colorful Tree(树形DP)
- postgresql的json操作
- mybatis+oracle+foreach list 批量插入数据
- Java 设计模式_适配器模式
- 微信开发 现金红包、裂变红包、企业付款
- 2017 Multi-University Training Contest
- 用C语言程序判断一个字符是否是字母或数字
- Javascript闭包
- 在datatable中显示百分比进度条
- 定时清理日志文件-python实现
- Java的数据类型和运算符
- jdk环境变量配置