设计模式--适配器模式C++实现

适配器模式C++实现

1定义Adapter

将一个类的接口变成客户端所需要的另外一种借口,从而使远不因为接口不匹配而无法合作的两个雷能够一起工作

又叫变压器模式,包装模式Wrapper

2类图

角色分析

Target目标角色,期望接口

Adaptee源角色,期望被转换的角色

Adapter适配器角色,核心,将元角色转换为目标角色,通过继承或者类关联的方式

3实现

class Target
{

protected:

  Target();

public:

  virtual void request() = 0;

  virtual ~Target()=0;

};

class ConcreteTarget:public Target

{

public:

  void request()

  {

    cout << "目标角色"<<endl;

  }

};

class Adaptee

{

public:

  void doSomething()

  {

    cout<< "这是需要被转化的角色"<<endl;

  }

};

class Adapter:public Target

{

private:

  Adaptee *_adaptee;

public:

  void request()

  {

    _adaptee->doSomething();

  }

};

4应用

①优点

可以让两个没有任何关系的类一起运行

增加了类的透明性

提高了类的复用性

灵活性非常好

②使用场景

当你有动机的修改一个已经投产中的接口时,适配器模式可以是你最好的选择。eg系统扩展

③注意事项

适配器模式尽量不要用在设计阶段,他不是为了解决正在开发阶段的问题,而是解决正在服役的项目问题

主要用于扩展和更正

5扩展

以上我们说的其实都是类适配器,完成类间合作

而兑现适配器可以通过关联方式完成类间协作

C++中的stack就是如此。将适配器中的目标角色中的操作委托给元角色执行

区别:类适配器是类间继承,对象适配器是对象的合成关系

适配器模式更多的是一个补救模式

posted @ 2016-03-28 12:23  狼行博客园  阅读(563)  评论(0编辑  收藏  举报