设计模式-适配器模式

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

适配器模式主要用在希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。
比如:在一个球队中有本土球员和外籍球员。由于语言不通,所以需要一个翻译作为适配器,让外籍球员与本土球员可以一起工作。
UML:
这里写图片描述

//抽象球员类
class Player {
protected:
    string m_name;
public:
    Player(string name):m_name(name){}
    virtual void Attack() = 0;
    virtual void Defense() = 0;
};
//前锋类
class Forward :public Player {
public:
    Forward(string name) :Player(name) {}
    void Attack()
    {
        cout << m_name << "进攻 ";
    }
    void Defense()
    {
        cout << m_name << "防守 " << endl;
    }
};
//外籍球员类
class ForeignPlayer{
private:
    string m_name;
public:
    void SetName(string name)
    {
        m_name = name;
    }
    void Attack2()       //外籍球员进攻防守方式不同
    {
        cout << m_name << "进攻 ";
    }
    void Defense2()
    {
        cout << m_name << "防守 " << endl;
    }
};
//翻译者
class Translator :public Player {
private:
    ForeignPlayer *player = new ForeignPlayer();  //外籍球员对象
public:
    Translator(string name): Player(name)
    {
        player->SetName(name);   
    }
    void Attack()
    {
        player->Attack2();//调用外籍球员的方法
    }
    void Defense()
    {
        player->Defense2();
    }
};
int main()
{
    Player *A = new Forward("qianfeng");
    A->Attack();
    A->Defense();
    Player *B = new Translator("yaoming");
    B->Attack();
    B->Defense();
    system("pause");
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值