[LintCode][System Design] Toy Factory

Problem

More LeetCode Discussions

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

Solution

/**
 * 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 {
private:
    const string kCat = "Cat";
    const string kDog = "Dog";
public:
    /**
     * @param type a string
     * @return Get object of the type
     */
    Toy* getToy(string& type) {
        if (type == kCat) {
            return new Cat();
        } else if (type == kDog) {
            return new Dog();
        }
        return NULL;
    }
};
    原文作者:楷书
    原文地址: https://www.jianshu.com/p/edb04d71e8bc
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞