学习设计模式笔记--适配器模式

来源:互联网 发布:js访问frame 编辑:程序博客网 时间:2024/06/06 17:23

注: 本篇文章的代码和概念来自《研磨设计模式》一书。
定义:
将一个类的接口转换成客户希望的另一个接口,适配器模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适配器的功能:
适配器模式的主要功能是进行转换匹配,目的是复用已有的功能,而不是实现新的接口。
适配器里面也可以实现新功能,这种适配器叫智能适配器。
Adaptee和Target没有关联的。
Adapter持有需要适配的接口adaptee,我们优先使用对象的组合,而不使用继承。
一般我们用一个适配类实现Target接口,里面还是调用Adaptee的方法。
可以适配多个Adaptee。
adapter的复杂程度,取决于target和adaptee的相似程度。
可以用缺省的适配器。
适配器模式类图:

这里写图片描述

示例代码:

被适配的对象Adaptee:/** * 被适配的对象 * @author Administrator * */public class Adaptee {    public void specificRequest(){        System.out.println("被适配的方法");    }}适配成的目标Target:/** * 适配成的目标 * @author Administrator * */public interface Target {    public void request();}适配对象:/** * 适配对象 * @author Administrator * */public class Adapter implements Target{    private Adaptee adaptee;    public Adapter(Adaptee adaptee){        this.adaptee = adaptee;    }    public void request() {        this.adaptee.specificRequest();    }}客户端:public class Client {    public static void main(String[] args) {        Adaptee adaptee = new Adaptee();        Target target = new Adapter(adaptee);        target.request();    }}

适配器模式调用顺序示意图:

这里写图片描述

双向适配器
适配器实现两个接口,如日志文件接口和数据库日志接口,客户端通过双向适配器得到不同的接口对象。
这里写图片描述

对象适配器和类适配器

类适配器本意是多重继承,但是在Java里,我们只能实现Target,继承Adaptee,是静态的。
对象适配器是以对象组合的形式,是动态的。

适配器的优缺点:
更好的复用性
更好的可扩展性
过多的使用适配器,会让系统非常凌乱

本质:转换功能,复用功能

0 0
原创粉丝点击