文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Adapt模式C++实现

Adapt模式C++实现

时间:2011-01-09  来源:alex22

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

解析:
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 Adaptee\n";
}

Adapter::Adapter(Adaptee* pAdaptee)
    : m_pAdptee(pAdaptee)
{

}

Adapter::~Adapter()
{
    delete m_pAdptee;
    m_pAdptee = NULL;
}

void Adapter::Request()
{
    std::cout << "Request of Adapter\n";

    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;
}

 

排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载