Java设计模式之适配器模式
来源:互联网 发布:c语言中的temp 编辑:程序博客网 时间:2024/06/05 07:14
适配器模式(有时候也称包装样式或者包装)定义:
将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 ——Gang of Four
类适配器代码
/** * 原功能BASE * @author suk1M * 2017.07.24 */public class CBaseSing { public void baseSing(){ System.out.println("I AM BASESING "); }}
/** * 目标功能 * @author suk1M * 2017.07.24 */public interface TargetSing { void Sing1(); void Sing2(); void Sing3();}
/** * 静态适配器 * @author suk1M * 2017.07.24 */public class SAdapterClass extends CBaseSing implements TargetSing { public void baseSing(){ super.baseSing(); } @Override public void Sing1() { System.out.println("I AM SING 1111111"); } @Override public void Sing2() { System.out.println("I AM SING 2222222"); } @Override public void Sing3() { System.out.println("I AM SING 3333333"); }}
public class TestDemo { /** * 静态适配测试方法 * @param args */ public static void main(String[] args) { SAdapterClass sAdapter = new SAdapterClass(); sAdapter.baseSing(); sAdapter.Sing1(); sAdapter.Sing2(); sAdapter.Sing3(); }}
结果如下:
对象适配器
/** * 原功能 * @author suk1M * 2017.07.25 */public interface IBaseSing { void Sing1();}/** * 原功能实现类 * @author suk1M * 2017.07.25 */public class IBaseSingImpl implements IBaseSing { @Override public void Sing1() { System.out.println("I AM BASESING 111111 "); }}
/** * 目标功能 * @author suk1M * 2017.07.24 */public interface TargetSing { void Sing1(); void Sing2(); void Sing3();}
/** * 动态适配器 * @author suk1M * 2017.07.24 */public class AdapterClass implements TargetSing { private IBaseSing bsing; public AdapterClass(IBaseSing bsing){ this.bsing = bsing; } @Override public void Sing1() { bsing.Sing1(); } @Override public void Sing2() { System.out.println("I AM SING 222222"); } @Override public void Sing3() { System.out.println("I AM SING 333333"); }}
/** * 动态适配测试方法 * @param args */ public static void main(String[] args) { IBaseSing iBsing = new IBaseSingImpl(); AdapterClass adapter = new AdapterClass(iBsing); adapter.Sing1(); adapter.Sing2(); adapter.Sing3(); }
测试结果如下:
基本概念
客户:需要调用我们的代码的对象。
Adapter模式的宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。
主要内容
(1)类适配器:
当客户在接口中定义了他期望的行为时,我们就可以应用适配器模式,提供一个实现该接口的类,并且扩展已有的类,通过创建子类来实现适配。
(2)对象适配器:
对象适配器”通过组合除了满足“用户期待接口”还降低了代码间的不良耦合。在工作中推荐使用“对象适配”。
使用的前提:
1.接口中规定了所有要实现的方法
2.但一个要实现此接口的具体类,只用到了其中的几个方法,而其它的方法都是没有用的。
实现方法
1.用一个抽象类实现已有的接口,并实现接口中所规定的所有方法,这些方法的实现可以都是“平庸”实现—-空方法;但此类中的方法是具体的方法,而不是抽象方法,否则的话,在具体的子类中仍要实现所有的方法,这就失去了适配器本来的作用。
2.原本要实现接口的子类,只实现1中的抽象类即可,并在其内部实现时,只对其感兴趣的方法进行实现。
注意事项
1.充当适配器角色的类就是:实现已有接口的抽象类
2.为什么要用抽象类:
此类是不要被实例化的。而只充当适配器的角色,也就为其子类提供了一个共同的接口,但其子类又可以将精力只集中在其感兴趣的地方。
======================================================
未完待续,23333。。
博主小白一枚,如果有不合理的地方还请指正。
(文章相关定义来源于百度百科)
- java设计模式之适配器设计模式
- java设计模式之适配器设计模式
- JAVA设计模式之适配器
- 深入浅出Java设计模式之适配器模式
- 深入浅出Java设计模式之适配器模式
- Java设计模式之适配器模式
- 深入浅出Java设计模式之适配器模式
- Java设计模式之适配器模式
- java 设计模式之七-适配器模式
- java设计模式之适配器模式
- Java设计模式之适配器模式
- java设计模式之适配器模式
- Java:设计模式之适配器模式Adapter
- java设计模式之适配器模式
- java设计模式之适配器模式
- Java设计模式之适配器模式
- Java设计模式之适配器模式
- java与设计模式之适配器模式
- 判断平衡二叉树/二叉树镜像/一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中
- HTML和CSS的注释方式及其作用
- Manacher算法总结
- (数据结构)二叉树的基本操作
- 关于按位与和按位或以及左/右移的相关知识
- Java设计模式之适配器模式
- Vue过滤器和自定义过滤器
- Java四种线程池的使用
- html和css和的注释方式及作用
- 关于telnet登录
- BZOJ1001狼抓兔子
- AlertDialog图片文本列表
- 前台系统首页面的广告问题
- 香港云主机CentOS系统上安装strongSwan搭建IPsec VPN服务器