//Creational Patterns--abstract factory
//创建型模式--抽象工厂

//-----------------------------------------------------------------
class Tank
{
public:
    virtual void message() = 0;
};

class Tank80 : public Tank
{
public:
    void message(){cout << "Tank80"<<  endl;}
};

class Tank99 : public Tank
{
    void message(){cout << "Tank99" << endl;}
};

//-----------------------------------------------------------------
class plane
{
public:
    virtual void message() = 0;
};

class plane80 : public plane
{
public:
    void message(){cout << "Plane80" << endl;}
};

class plane99 : public plane
{
public:
    void message(){cout << "Plance99" << endl;}
};

//-----------------------------------------------------------------
class Factory
{
public:
    virtual Tank* createTank() = 0;
    virtual plane* createPlane() = 0;
};

class Factory80 : public Factory
{
public:

    Tank* createTank(){return new Tank80();}
    plane* createPlane(){return new plane80();}
};
class Factory99 : public Factory
{
public:
    Tank* createTank(){return new Tank99();}
    plane* createPlane(){return new plane99();}
};

10-03 17:29