lintcode-496-玩具工厂

496-玩具工厂

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

您在真实的面试中是否遇到过这个题? Yes

样例

 ToyFactory tf = ToyFactory();
 Toy toy = tf.getToy('Dog');
 toy.talk(); 
 >> Wow

 toy = tf.getToy('Cat');
 toy.talk();
 >> Meow

code

/**
 * 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
public:
    void talk() const {
        printf("Wow\n");
    }
};

class Cat : public Toy {
    // Write your code here
    void talk() const {
        printf("Meow\n");
    }
};

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

        return toy;
    }
};
posted @ 2017-08-23 10:23  LiBaoquan  阅读(212)  评论(0编辑  收藏  举报