适配器模式

【扩展】一个对象如果不存储实体状体以及对象之间的关系,该对象就叫做贫血对象,对应的领域模型就是贫血领域模型
有实体状体和对象关系的模型就是充血领域模型

适配器模式的定义:
Convert the interface of a class into another interface clients expect. Adapter lets classes
work together that couldn't otherwise bacause of incompatible interface.
将一个类的接口变换成客户端期待的另一个接口,从而使原本因接口不匹配的而无法在一起工作的两个类
能够在一起工作。

适配器模式角色:
1.Target角色:该角色定义把其他类转换为何种接口,也就是我们期望的接口
2.Adaptee源角色:想要把谁转换为目标角色,它是已经存在的,运行良好的类或对象,经过适配器角色的
包装,它会成为一个新的角色
3.Adapter适配器角色:适配器模式的核心角色,其他两个角色都是已经存在的角色,而适配器角色是需要
新建的,它的职责就是通过继承或类关联的方式把源角色转换为目标角色

//目标角色:它是一个已经正式运行的角色,不需要去修改角色中的方法,只需要去实现接口中的方法,
//而且通常情况下,目标角色是一个接口或抽象类
public class interface Target{
    public void request();
}
//目标角色的实现类
public class ConcreteTarget implements Traget{
    public void request(){
        //.....
    }
}
//源角色
public class Adaptee{
    public void doSomething(){
        //....
    }
}
//适配器角色
public class Adapter extends Adaptee implements Target{
    public void request{
        super.doSomething();
    }
}

//场景类
public class Client{
    public static void main(String[] args){
        Target target=new ConcreteTarget();
        target.request();
        Target target2=new Adapter();
        target2.request();
    }
}

适配器模式的优点:
1.适配器模式可以让两个没有任何关系的类在一起运行,只要适配器这个角色能够搞定它们就成
2.增加了类的透明性
3.提高了类的复用度
4.灵活性非常好
使用场景:
适配器模式的应用场景只要记住一点就足够了:只要有动机修改一个已经投产中的接口时,适配器模式可能是
最适合你的模式。比如系统扩展了,需要使用一个已有或新建立的类,但这个类不符合系统的接口,怎么办?使用
适配器模式
注意事项;适配器模式最好在详细设计阶段不要考虑它,它不是为了解决还处于开发阶段的问题,而是解决正在服
役的项目问题

以上说的是类适配器模式,以下类图为对象适配器,即将上面的继承关系改为了关联关系

适配器模式是一个补偿模式,或者说是一个“补救”模式,通常用来解决接口不相容的问题

原文地址:https://www.cnblogs.com/liaojie970/p/5488964.html