玩具工厂-LintCode

来源:互联网 发布:淘宝网汽车用品配件 编辑:程序博客网 时间:2024/06/09 20:05

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

样例:

ToyFactory tf = ToyFactory();Toy toy = tf.getToy('Dog');toy.talk(); >> Wowtoy = tf.getToy('Cat');toy.talk();>> Meow
#ifndef C496_H#define C496_H#include<iostream>using namespace std;/*** 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    void talk() const    {        cout << "Wow" << endl;    }};class Cat : public Toy {    // Write your code herepublic:    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        Toy *toy;        if (type == "Cat")            toy = new Cat();        else            toy = new Dog();        return toy;    }};#endif