美文网首页
适配器模式: Convert the interface of

适配器模式: Convert the interface of

作者: _fan凡 | 来源:发表于2019-03-26 23:58 被阅读0次

适配器模式英文定义:
Convert the interface of a class into another interface clients expect.Adapter lets classes work together that couldn't otherwise because of incompatible interfaces.

将一个类的接口转换成客户端所期待的另一种接口,从而使不能匹配的解耦能够在一起工作。

适配器模式又叫变压器模式,也叫作包装模式,但包装模式包括多种模式,如装饰模式也是。

这里引出几个概念:

贫血对象:一个对象如果不存在状态和对象之间的关系,就叫做贫血对象,对应的领域模式就叫做贫血领域模型。

反之,就是充血对象和充血领域模型。

适配器模式通用类图如下:

6.png

适配器模式包含三个角色:如下;

1、Target:已经存在的接口,是目标,也就是要把其他类转换为这个接口类型。以这个接口类型为标准对外统一提供服务。

2、Adaptee:需要转换的类,就是把这个类的服务转换成Target,是该类的服务也能按照Target的标准对外提供服务。

3、Adapter:适配器模式的核心,就是通过该类,把Adaptee转换成Target,把两个已经存在的(如果Adaptee是新建的也可以,但是多此一举,闲的蛋疼吗)毫不相干的两个类关联在一起,能够提供一样的服务。一般是Adapter是类,实现Target接口,和Target的正常实现类是并列关系。

适配器模式的优点:

1、适配器模式可以让两个没有任何关系的类一起运行,只要适配器这个类能够搞定他们就行。

2、增加了类的透明性:我们明明访问的是Target,但是适配器却把实现委托给了Adaptee来实现,但是用户却浑然不知

3、提高了类的复用度:Adaptee在新旧系统中都可以使用

4、灵活性好:如果不想使用Adaptee和Adapter了,直接删除Adapter类就行了。

适配器适用场景:

如果需要修改一个已经投产运行的系统,在现有的系统中需要新建或者扩展接口时,但是新建的哟不符合现有系统接口的规范,就可以考虑使用该模式。

注意事项:

适配器只适用于已经运行的系统,在开发阶段的系统不建议使用该模式,如果在开发阶段出现适配器的使用场景,说明设计不合理,最好修改设计方案。

扩展:

上述中,Adapter是继承了Adaptee类,但是如果有多个Adaptee类怎么办呢,毕竟java是不支持多继承的。这就要求Adaptee与Adapter类的关系有继承改为关联就可以了。

通用类图如下:


7.png

相关文章

网友评论

      本文标题:适配器模式: Convert the interface of

      本文链接:https://www.haomeiwen.com/subject/mynovqtx.html