工廠模式是一種常見(jiàn)的設(shè)計(jì)模式。請(qǐng)實(shí)現(xiàn)一個(gè)玩具工廠 ToyFactory 用來(lái)產(chǎn)生不同的玩具類。可以假設(shè)只有貓和狗兩種玩具。
您在真實(shí)的面試中是否遇到過(guò)這個(gè)題?
Yes
樣例
ToyFactory tf = ToyFactory();
Toy toy = tf.getToy('Dog');
toy.talk();
Wow
toy = tf.getToy('Cat');
toy.talk();
Meow
/**
* 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 {
cout << "Wow" << endl;
}
};
// 基類中又const ,那么繼承的派生類中必須要又const ,否則編譯不通過(guò)
class Cat : public Toy {
// Write your code here
public:
void talk() const {
cout << "Meow" << endl;
}
};
// 基類中又const ,那么繼承的派生類中必須要又const ,否則編譯不通過(guò)
class ToyFactory {
public:
/**
* @param type a string
* @return Get object of the type
*/
Toy* getToy(string& type) {
// Write your code here
Toy * t;
if (type == "Dog") {
t = new Dog();
return t;
}
if (type == "Cat") {
t = new Cat();
return t;
}
return NULL;
}
};