设计模式---适配器模式

来源:互联网 发布:算法的概念 上海教材 编辑:程序博客网 时间:2024/06/14 02:38

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


#include<iostream>


using namespace std;

class Player
{
    protected:
        string m_name;
    public:
        Player(string name)
        {
            m_name = name;
        }
        virtual void Attack(){}
        virtual void Defense(){}
};

class Forwards : public Player
{
    public:
        Forwards(string name):Player(name){}
    void Attack()
    {
        cout<<"forwards attack..."<<m_name<<endl;
    }
    void Defense()
    {
        cout<<" forwars defense..."<<m_name<<endl;
    }
};

class Center : public Player
{
    public:
        Center(string name):Player(name){}
    void Attack()
    {
        cout<<"Center attack..."<<m_name<<endl;
    }
    void Defense()
    {
        cout<<" Center defense..."<<m_name<<endl;
    }
};

class Guards : public Player
{
    public:
        Guards (string name):Player(name){}
    void Attack()
    {
        cout<<"Guards  attack..."<<m_name<<endl;
    }
    void Defense()
    {
        cout<<"Guards  defense..."<<m_name<<endl;
    }
};


class ForeignerCenter
{
    private:
        string m_name;
    public:

    void SetName(string name)
    {
        m_name = name;
    }

    string GetName()
    {
        return m_name;
    }

    void Attack()
    {
        cout<<"ForeignerCenter  attack..."<<m_name<<endl;
    }
    void Defense()
    {
        cout<<"ForeignerCenter  defense..."<<m_name<<endl;
    }
};

class Translator:public Player
{
    private:
        ForeignerCenter *wf;
    public:
        Translator(string name):Player(name)
        {
            wf = new ForeignerCenter();
            wf->SetName(m_name);
        }
    void Attack()
    {
        wf->Attack();
    }
    void Defense()
    {
        wf->Defense();
    }
};

int main()
{
    Player *b = new Forwards("bai");
    b->Attack();

    Player *m = new Guards("mai");
    m->Attack();


    Player *ym = new Translator("yao");
    ym->Attack();
    ym->Defense();
    
    return 0;
}
原创粉丝点击