注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

写着玩

Bob

 
 
 

日志

 
 
 
 

设计模式的解析和实现(C++)之六-Adapt模式  

2009-06-17 23:31:18|  分类: GOF设计模式 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

http://tech.ddvip.com/2009-03/1238318383112748.html

 

作用:

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

  UML示意图

  1)采用继承原有接口类的方式

设计模式的解析和实现(C++)之六-Adapt模式 - yolcy - yolcy的博客

  2)采用组合原有接口类的方式

设计模式的解析和实现(C++)之六-Adapt模式 - yolcy - yolcy的博客

  解析:

  Adapt模式其实就是把完成

  实现:

  Adapt模式有两种实现办法,一种是采用继承原有接口类的方法,一种是采用组合原有接口类的方法,这里采用的是第二种实现方法.

  1)Adapt.h

/**//********************************************************************

    created:    2006/07/20

    filename:     Adapter.h

    author:        李创

                http://www.cppblog.com/converse/

    purpose:    Adapter模式的演示代码

*********************************************************************/

#ifndef ADAPTER_H

#define ADAPTER_H

// 需要被Adapt的类

class Target

{

public:

    Target(){}

    virtual ~Target() {}

    virtual void Request() = 0;

};

// 与被Adapt对象提供不兼容接口的类

class Adaptee

{

public:

    Adaptee(){}

    ~Adaptee(){}

    void SpecialRequest();

};

// 进行Adapt的类,采用聚合原有接口类的方式

class Adapter

    : public Target

{

public:

    Adapter(Adaptee* pAdaptee);

    virtual ~Adapter();

    virtual void Request();

private:

    Adaptee* m_pAdptee;

};

#endif

2)Adapt.cpp

/**//********************************************************************

    created:    2006/07/20

    filename:     Adapter.cpp

    author:        李创

                http://www.cppblog.com/converse/

    purpose:    Adapter模式的演示代码

*********************************************************************/

#include "Adapter.h"

#include <iostream>

void Adaptee::SpecialRequest()

{

    std::cout << "SpecialRequest of Adapteen";

}

Adapter::Adapter(Adaptee* pAdaptee)

    : m_pAdptee(pAdaptee)

{

}

Adapter::~Adapter()

{

    delete m_pAdptee;

    m_pAdptee = NULL;

}

void Adapter::Request()

{

    std::cout << "Request of Adaptern";

    m_pAdptee->SpecialRequest();

}

  3)Main.cpp

/**//********************************************************************

    created:    2006/07/20

    filename:     Main.cpp

    author:        李创

                http://www.cppblog.com/converse/

    purpose:    Adapter模式的测试代码

*********************************************************************/

#include "Adapter.h"

#include <stdlib.h>

int main()

{

    Adaptee *pAdaptee = new Adaptee;

    Target *pTarget = new Adapter(pAdaptee);

    pTarget->Request();

    delete pTarget;

    system("pause");

    return 0;

}

  评论这张
 
阅读(226)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017