代码改变世界

适配器模式

2015-04-28 22:24  foolbread-老陈  阅读(137)  评论(0编辑  收藏  举报

   适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。——《HEAD FIRST 设计模式》

   我的c++代码:

#ifndef DESIGN_ADAPTER_H_
#define DESIGN_ADAPTER_H_

namespace adapter{

class Duck
{
public:
    virtual void Quack() = 0;
    virtual void Fly() = 0;
};

class Turkey
{
public:
    virtual void Gobble() = 0;
    virtual void Fly() = 0;
};
///////////////////////////

class MallardDuck : public Duck
{
public:
    virtual void Quack();
    virtual void Fly();
};

class WildTurkey : public Turkey
{
public:
    virtual void Gobble();
    virtual void Fly();
};

class TurkeyAdapter : public Duck
{
public:
    TurkeyAdapter(Turkey* t);
public:
    virtual void Quack();
    virtual void Fly();
private:
    Turkey* m_turkey;
};
}
#endif // DESIGN_ADAPTER_H_
#include "adapter.h"
#include <iostream>

using namespace adapter;

void MallardDuck::Quack()
{
    std::cout << "Quack" << std::endl;
}

void MallardDuck::Fly()
{
    std::cout << "I'm flying" << std::endl;
}

void WildTurkey::Gobble()
{
    std::cout << "Gobble gobble" << std::endl;
}

void WildTurkey::Fly()
{
    std::cout << "I'm flying a short distance" << std::endl;
}

TurkeyAdapter::TurkeyAdapter(Turkey* t)
{
    this->m_turkey = t;
}

void TurkeyAdapter::Quack()
{
    this->m_turkey->Gobble();
}

void TurkeyAdapter::Fly()
{
    this->m_turkey->Fly();
}
  个人感悟:待留。