[LintCode] Toy Factory 玩具工厂
Factory is a design pattern in common usage. Please implement a ToyFactory which can generate proper toy based on the given type.
Example
ToyFactory tf = ToyFactory();
Toy toy = tf.getToy('Dog');
toy.talk();
>> Wow
toy = tf.getToy('Cat');
toy.talk();
>> Meow
这道题还是考察工厂模式Factory Pattern的题,跟之前那道Shape Factory没有啥区别,难度并不是很大,参见代码如下:
/** * 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 { void talk() const { cout << "Wow" << endl; } }; class Cat: public Toy { void talk() const { cout << "Meow" << endl; } }; class ToyFactory { public: /** * @param type a string * @return Get object of the type */ Toy* getToy(string& type) { if (type == "Dog") { return new Dog(); } else if (type == "Cat") { return new Cat; } return NULL; } };
类似题目: