[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 ,如需转载请自行联系原博主。

相关文章
|
JSON JavaScript 数据格式
Elementui Tree 树形控件删除子节点
Elementui Tree 树形控件删除子节点
382 1
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
8052 112
|
Ubuntu 持续交付 API
如何使用 dotnet pack 打包 .NET 跨平台程序集?
`dotnet pack` 是 .NET Core 的 NuGet 包打包工具,用于将代码打包成 NuGet 包。通过命令 `dotnet pack` 可生成 `.nupkg` 文件。使用 `--include-symbols` 和 `--include-source` 选项可分别创建包含调试符号和源文件的包。默认情况下,`dotnet pack` 会先构建项目,可通过 `--no-build` 跳过构建。此外,还可以使用 `--output` 指定输出目录、`-c` 设置配置等。示例展示了创建类库项目并打包的过程。更多详情及命令选项,请参考官方文档。
779 12
|
编译器 C语言 C++
如何解决VS中scanf使用时报错或无法使用的问题
如何解决VS中scanf使用时报错或无法使用的问题
459 0
【已解决】ZooKeeper配置中出现Error contacting service. It is probably not running
【已解决】ZooKeeper配置中出现Error contacting service. It is probably not running
803 1
|
Java 网络性能优化 微服务
让Elasticsearch飞起来!——性能优化实践干货
Elasticsearch性能优化的最终目的:用户体验爽。爽点就是:快、准、全!关于Elasticsearch性能优化,阿里、腾讯、京东、携程、滴滴、58等都有过很多深入的实践总结,都是非常好的参考。本文换一个思路,基于Elasticsearch的爽点,进行性能优化相关探讨。
8829 0
让Elasticsearch飞起来!——性能优化实践干货
|
数据可视化 Java
《IntelliJ IDEA 插件开发》第二节:开发摸鱼看书的侧边栏窗体
一、说明 二、需求目的 三、案例开发 1. 工程结构 2. 创建 UI 窗体 3. ToolWindow 工具框 4. Configurable 配置框 5. 配置 plugin.xml 四、插件测试 五、总结 六、系列推荐
1401 0
《IntelliJ IDEA 插件开发》第二节:开发摸鱼看书的侧边栏窗体
|
负载均衡 网络协议 Dubbo
高并发系统设计之负载均衡
通过负载均衡,我们能提高系统的可用性,提升响应速度,同时也能防止任何单一的资源过度使用。
737 0
|
程序员 C# 开发框架
深入解析C#中的语法糖
本文将详细探讨C#编程语言中的“语法糖”概念,解释其含义、作用以及在日常编程实践中的常见例子。通过本文,读者将能够更深入地理解C#语言的灵活性和便捷性,并学会如何有效利用语法糖提高代码的可读性和开发效率。
|
数据库
idea整合EasyCode基于lombok和swagger自定义模板
idea整合EasyCode基于lombok和swagger自定义模板
491 0