将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
键盘的Q按键按多了难免会损坏,如果没有了Q按键,我们如何称霸联盟?不用着急,只要使用了适配器模式,我们可以按空格键施放第一个技能,就再也不用担心Q按钮损坏了。
适配器模式重在不改变原来的接口,将其他类的接口转换成另一个符合客户期望的接口。此模式比较简单,但有两种模式:类适配器和对象适配器。在这里只详细说明对象适配器,因为只有在使用多重继承的时候,才会用到类适配器(今后有时间可以讲给大家听)。
适配器模式类图如下:
调用过程大致描述为:
- 客户通过调用目标接口发起请求,从而调用适配器的接口
- 适配器将客户的请求转换成被适配者的一个或多个接口的调用
从类图可以得知,适配器持有被适配者的实例(组合)。当客户接收到调用的结果后,并不会察觉整个过程是适配器在起转换作用,这也满足代码解耦的原则。
你可能会觉得适配器模式有点像装饰者模式,这里只需要记住两条规则便能将其分清:
装饰者:不改变接口,但加入职责
适配器:将一个接口转换成另一个接口
倾情告白:实现一个适配器可能要一番功夫,也可能不费功夫,要看目标接口的大小与复杂程度。
关注微信公众号CodingArtist,可以第一时间得到文章更新通知! _