今天进入了结构型模式篇之第一------适配器模式
其实,适配器模式在编程中我们会不知不觉中应用到,我也有用过。我个人感觉就是利用现有的资源,然后根据接口要求适配。
上面UML的这种事对象适配器,适配器有两种表达方式,另一种的类适配器。待会说。上面的结构清晰简明就不多说了。反正这种文章只有我自己看(自娱自乐)。
接下来看个例子吧。
interface IStack//客户期望的接口(Request()) { void Push(object item); object Pop(); object Peek(object item); }
namespace Adapter { class Adapter:IStack//适配对象 { ArrayList Adaptee;//被适配对象--(我们拥有的资源) public Adapter() { Adaptee = new ArrayList(); } public void Push(object item) { Adaptee.Add(item); } public object Pop() { return Adaptee.RemoveAt(Adaptee.Count - 1); } } }
上面的例子是,我们想实现一个栈的操作,但有不想从新写代码,只好利用现有的资源ArrayList进行改造,那么就要对它进行适配,适配成客户需要的接口。
看看上面的代码ArrayList是以组合的形式存在的,更符合松耦合的原则。
接下来看看类结构的形式吧。
对这个UML解释:
Adapter要同时继承接口Target和Adaptee,那么现在的情况是Adaptee是以继承的形式出现的,而面向对象用继承的判断法则是:子类而代替父类,如果按照上面的例子是不行的,继承的代价太大,也不符合面向对象思想。这种情况就不多说了。