码迷,mamicode.com
首页 > 其他好文 > 详细

Adapter适配器模式

时间:2014-06-22 23:55:36      阅读:424      评论:0      收藏:0      [点我收藏+]

标签:class   blog   http   ext   com   使用   

在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。

将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

bubuko.com,布布扣

对象适配器

interface IStack    客户期望的端口

{

  void Push(object item);

 object Pop();

 object Peek();

}

 class MyStack  implement IStack //适配对象   把ArrayList方法适配到客户端接口

{

  ArrayList list;//有很多方法 被适配的对象   

    public MyStack()

      {

         list = new ArrayList();

  }

  public void Push(object item)

  {

   list.Add(item);

  } 

  object Pop()

  {

   return list.RemoveAt(list.Count - 1);

  }

 object Peek()

  {

   return list[list.Count - 1];

  }

}

 bubuko.com,布布扣

类适配器   违背了面向对象的单一职责原则,即完成了ArrayList接口又实现了IStack接口 耦合度也很高

interface IStack    客户期望的端口

{

  void Push(object item);

 object Pop();

 object Peek();

}

 class MyStack  extends ArrayList  implement IStack    //适配对象   把ArrayList方法适配到客户端接口

{

  //ArrayList list;//有很多方法 被适配的对象   

    public MyStack()

      {

         list = new ArrayList();

  }

  public void Push(object item)

  {

   this.Add(item);

  } 

  object Pop()

  {

   return this.RemoveAt(list.Count - 1);

  }

 object Peek()

  {

   return this[list.Count - 1];

  }

}

 Adapter模式的几个要点

Adapter模式主要应用于“希望复用一些现存的类,但是接口又与复用环境要求不一致的情况”,在遗留代码复用、类库迁移等方面非常有用。

GOf23定义了两种Adapter模式的实现结构,对象适配器和类适配器。但类适配器采用多继承的实现方式,带来了不良的高耦合,所以一般不推荐使用。对象适配器采用对象组合的方式,更符合松耦合的精神。

Adapter模式可以实现的非常灵活,不必拘泥于gof23中定义的两种结构。例如完全可以将Adapter模式中的现存对象作为新的接口方法参数,来达到适配的目的。

Adapter模式本身要求我们尽可能地使用  面向接口的编程  风格,这样才能在后期很方便地适配。

Adapter适配器模式,布布扣,bubuko.com

Adapter适配器模式

标签:class   blog   http   ext   com   使用   

原文地址:http://www.cnblogs.com/hyp5490-/p/3800066.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!