design pattens - adapter
适配器模式适应这样的场景:一个已经存在的类(Adaptee),它因为接口和客户需要的并不匹配而不能直接被重用。
通过定义一个单独的适配器类,此类实现客户需要的接口,内部调用转向到这个已经存在的、但是接口不能直接适配的类Adaptee。
适配器模式的要点在于,通过引入一个适配器类,转换客户代码需要的接口到现存的类,这样做的好处就是这是增加代码,而不去修改代码。增加的是适配器类,无需改动的是先做的类,以及客户调用接口的代码。这也暗和“开闭原则” - 对修改封闭,对添加开放。
我们看一个案例。一个仓库系统,需要使用进销存系统的类来完成对应单据的过账。进销存内的现存类并不能提供仓库系统要求的接口,此时设计者就引入了一个适配器类,Adapter。设计者提供的图是这样的:
他认为自己对画静态UML的能力有限,也不是很规范了。但是意图表达已经非常清晰了。
正式的wiki上对适配器的定义,提供了两种实现适配器模式的可能。第一种是组合Adaptee类到Adapter类内,一种是Adapter类继承Adaptee类,两者的差异在标注的代码中得到体现。继承是更加省事的方案。当然有些条件下不能继承,就只能用组合。比如遇到了sealed类,就没有办法继承了。
相关推荐
wellfly 2020-01-10
绿豆饼 2019-10-20
89550492 2011-09-13
喝绿茶的猫 2015-05-30
llzhangfly 2012-11-26
Colphin 2019-06-28
onlyring的文档库 2012-05-31
康 2014-12-12
lxypeter 2010-09-17
guanguanmeng 2019-06-21
XiaoMuFireAnt 2009-09-02
vincent 2012-03-05
柒青衿 2011-12-27
leverage00 2016-06-23
NASA00 2013-04-06
yuyu00 2013-01-28
quickisbest 2013-01-22
Leo的memo 2012-12-12