适配器模式

今天进入了结构型模式篇之第一------适配器模式

其实,适配器模式在编程中我们会不知不觉中应用到,我也有用过。我个人感觉就是利用现有的资源,然后根据接口要求适配。

上面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是以继承的形式出现的,而面向对象用继承的判断法则是:子类而代替父类,如果按照上面的例子是不行的,继承的代价太大,也不符合面向对象思想。这种情况就不多说了。

原文地址:https://www.cnblogs.com/huaizuo/p/2614273.html