“学习OO好榜样”之Adapter模式

我对Adapter模式的理解是:
某处有一些需求,可体现为Target接口(不妨假定Target有两个方法,m1、m2)。
我们在满足该需求的时候,即构造类来实现Target接口的时候,很容易想到的是看看是否存在已有资源可被利用(重用)。
比方说,此时我们发现Adaptee类实现了方法m1,如何重用?

两种重用方式分别对应于Adapter模式的两种形态:
1 继承的方式——类的Adapter模式
Adapter类从Adaptee类继承,于是自然拥有了方法m1。再自行实现方法m2,便完成了对Target接口的实现。
2 合成/聚合的方式——对象的Adapter模式
Adapter拥有一个Adaptee类型的属性,方法m1的实现委托给该属性实例的方法m1来做。再自行实现方法m2,也完成了对Target接口的实现。

哪种方式好呢?我强烈认为后者好些。满足合成/聚合复用原则。
事实上,后者确实更加灵活,比如Adaptee所拥有的方法m1名字叫做m3,但其实现的功能与Target要求的方法m1完全一样,或者只需稍微转换一下输出结果的格式。那么类的Adapter模式就不适用了,而对象的Adapter模式依然可以面带微笑。

总之,我认为Adapter模式是基于重用考虑的一种模式。
你要什么(接口),我就给你什么(实现类),我从哪里攒叨出来的方法实现,你就不用关心了(封装实现逻辑、实现方式)。你只需知道我是你所需接口的实现类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值