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