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;
}
};