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

来源:互联网 发布:人工智能下一个风口 编辑:程序博客网 时间:2024/04/29 13:28

描述:

工厂模式是一种常见的设计模式。请实现一个玩具工厂 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;        }    }};