[LintCode] Toy Factory 玩具工厂

简介:

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

这道题还是考察工厂模式Factory Pattern的题,跟之前那道Shape Factory没有啥区别,难度并不是很大,参见代码如下:

/**
 * 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 {
public:
    /**
     * @param type a string
     * @return Get object of the type
     */
    Toy* getToy(string& type) {
        if (type == "Dog") {
            return new Dog();
        } else if (type == "Cat") {
            return new Cat;
        }
        return NULL;
    }
};

本文转自博客园Grandyang的博客,原文链接:玩具工厂[LintCode] Toy Factory ,如需转载请自行联系原博主。

相关文章
|
1月前
|
安全 Java 数据库连接
【Java每日一题】——第四十题:设计一个Shape接口和它的两个实现类Square和Circle
【Java每日一题】——第四十题:设计一个Shape接口和它的两个实现类Square和Circle
106 0
|
1月前
|
安全 Java 数据库连接
【Java每日一题】——第二十八题:编程定义一个学生类汽车类Car
【Java每日一题】——第二十八题:编程定义一个学生类汽车类Car
51 0
|
22天前
|
C++
[C++/PTA] 狗的继承
[C++/PTA] 狗的继承
38 0
|
8月前
UVa10114 - Loansome Car Buyer
UVa10114 - Loansome Car Buyer
28 0
Egret学习笔记 (Egret打飞机-7.实现敌机工厂)
Egret学习笔记 (Egret打飞机-7.实现敌机工厂)
65 0
|
设计模式 PHP
php设计模式-简单工厂模式 (Simple Factory)
简单工厂模式又称为静态工厂方法模型,它属于类创建型模式,简单工厂并不属于23种设计模式,刚开始学习设计模式的同学,对简单工厂模式、工厂方法、抽象工厂中的工厂一知半解,其实白话点来说:这些模式一定会有一个工厂类,子类并不需要知道工厂细节,只需新建工厂创建产品即好。
99 0
|
机器学习/深度学习 人工智能 BI
UPC Travel by Car (两次Floyd)
UPC Travel by Car (两次Floyd)
57 0
|
项目管理 开发工具 git
SUV的配置及使用(SUV简介)|学习笔记
快速学习SUV的配置及使用(SUV简介)
Funny Car Racing - 最短路小技巧
题意: n个路口,m条街道,每条街道都是有向的 并且这m条街道open a秒 close b秒(循环往复),自己的车通过这条道路需要t秒 可以从路口等待某一条道路open,必须在道路close 之前通过,且必须在另一条道路open的时候进入 问能否从s点到达t点,如果不能,输出-1,如果能输出最短的时间 细节的地方加在了代码里,在建图的过程中,如果说a > t,那么说这条路无论如何是走不过去的,所以干脆直接不建边
70 0
基于猫狗大战奥特曼,再手写一次apply、call和bind
基于猫狗大战奥特曼,再手写一次apply、call和bind~ 温故而知新,再看不会你把我头拧下来! 今天刷题的时候看到一个有关 call 和 apply 的奇葩描述,觉得挺有意思的,于是重新把 call 和 apply 的逻辑手写了一遍,温故而知新~
139 0