十九、适配器设计模式
来源:互联网 发布:淘宝东西会自动下架吗 编辑:程序博客网 时间:2024/05/17 04:53
1. 适配器模式介绍
我们在日常生活中,会经常接触到设配器模式,比如我们的充电器,不同的手机接口类型可能不一样,这个时候只要一个转接口,就可以解决我们的问题。这个转接口就是我们的适配器。
定义
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起的两个类能够在一起工作。
2. 适配器模式的使用场景
- 系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容。
- 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
- 需要一个统一的输出接口,而输入端的类型不可预知。
3. 适配器模式的UML类图
类适配器模式UML:
对象适配器模式UML:
4. 适配器模式的简单实例
类适配器模式
- (1)、目标接口Target
public interface Target { /** * 源Adaptee中有的方法 */ public void operation1(); public void operation2();}
目标接口中有两个方法,operation1()是源Adaptee中有的方法,operation2()是没有的方法。
- (2)、Adaptee角色:
public class Adaptee { public void operation1() { System.out.println("operation1"); }}
Adaptee角色中只有一个和接口中名称一样的方法operation1()。
- (3)、Adapter角色:
public class Adapter extends Adaptee implements Target { @Override public void operation2() { //相关代码 System.out.println("operation2"); }}
在Adapter角色中,继承了Adaptee类,同时实现了Target接口,这样Adaptee中有了两个方法。
- (4)、测试类:
public class Client { public static void main(String[] args) { Adapter adapter = new Adapter(); adapter.operation1(); adapter.operation2();}
对象适配器模式
对象适配模式和类适配模式的区别在于Adapter类中,对象适配模式的Adapter类如下:
public class Adapter { private Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } public void operation1(){ this.adaptee.operation1(); } public void operation2(){ }}
在Adapter的构造方法中,传递进来一个Adaptee对象引用,Adapter类中有接口的两个方法,operation1()直接调用adaptee中的operation1()方法;operation2()实现具体的逻辑即可。
选择那种方法?
在Adapter的使用过程中,尽量使用对象适配器的实现方式,多用合成或者聚合,少用继承。因为类只能继承一次,具有局限性。
5. 适配器模式在Android源码中
我们在开发中都使用过ListView,使ListView填充起来的就是Adapter,Adapter的作用就是将不同的Item填充到不同的View中。这里的Adaptee就是需要被处理的item View,Target角色就是View。
6. 总结
优点:
更好的复用性。系统需要使用现有的类,而此类的接口不符合系统的需要。那么通过适配器模式就可以让这些功能得到更好的复用。
更好的扩展性。在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。
缺点:
- 过多的使用适配器,会让系统非常零乱,不易整体进行把握。比如调用的是A接口,却调用的是B的实现。
- 十九、适配器设计模式
- Android设计模式(十九)-适配器模式
- 设计模式:适配器模式
- 设计模式------适配器模式
- 设计模式:适配器模式
- 设计模式---适配器模式
- 设计模式 适配器模式
- 设计模式 - 适配器模式
- 设计模式--适配器模式
- 设计模式-适配器模式
- 设计模式------适配器模式
- 设计模式---适配器模式
- 设计模式- 适配器模式
- 设计模式 - 适配器模式
- 设计模式:适配器模式
- 适配器模式--设计模式
- 设计模式 - 适配器模式
- 设计模式-适配器模式
- 关于大数加减乘除方面的感想
- C语言 sizeof 运算符
- 第10周项目3-警察与厨师
- Oracle数据库-SQL及操作符
- JSP-JSP的生命周期
- 十九、适配器设计模式
- android studio NDK 开发初探
- JAVA8 Lambda表达式完全解析
- UESTC - 1041 Hug the princess(位运算&转换)好题
- 自言自语3
- 使用 Intel HAXM 为 Android 模拟器加速,媲美真机
- Xftp5中文文件乱码
- 带你系统学习GCD(二)
- python3+scapy扫描获取局域网主机ip和mac