LintCode-[容易] 496. 玩具工厂

描述:

工厂模式是一种常见的设计模式。请实现一个玩具工厂 ToyFactory 用来产生不同的玩具类。可以假设只有猫和狗两种玩具。

样例:

ToyFactory tf = ToyFactory();
Toy toy = tf.getToy(‘Dog’);
toy.talk();
输出 Wow

toy = tf.getToy(‘Cat’);
toy.talk();
输出 Meow

思路:

利用多态,将Toy设为抽象基类,Dog和Cat继承Toy,并设计自己的talk函数。getToy函数根据传进去的玩具种类返回相应的子类指针。

C++实现:

/**
 * Your object will be instantiated and called as such:
 * ToyFactory* tf = new ToyFactory();
 * Toy* toy = tf->getToy(type);
 * toy->talk();
 */
class Toy {
public:
    virtual void talk() const=0;
};

class Dog: public Toy {
    // Write your code here
     virtual void talk() const {
        cout << "Wow" << endl;
    }
};

class Cat: public Toy {
    // Write your code here
    virtual void talk() const {
        cout << "Meow" << endl;
    }
};

class ToyFactory {
public:
    /**
     * @param type a string
     * @return Get object of the type
     */
    Toy* getToy(string& type) {
        // Write your code here
        if (type == "Dog") {
            Dog* aDog = new Dog;
            return aDog;
        }
        else if (type == "Cat") {
            Cat* aCat = new Cat;
            return aCat;
        }
        else {
            return NULL;
        }
    }
};

你可能感兴趣的:(-LintCode-)