欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 设计模式练习(二) 简单工厂模式

设计模式练习(二) 简单工厂模式

2025/4/3 14:54:37 来源:https://blog.csdn.net/qq_44348970/article/details/143823870  浏览:    关键词:设计模式练习(二) 简单工厂模式

设计模式练习(二) 简单工厂模式

题目描述

小明家有两个工厂,一个用于生产圆形积木,一个用于生产方形积木,请你帮他设计一个积木工厂系统,记录积木生产的信息。

输入描述

输入的第一行是一个整数 N(1 ≤ N ≤ 100),表示生产的次数。

接下来的 N 行,每行输入一个字符串和一个整数,字符串表示积木的类型。积木类型分为 “Circle” 和 “Square” 两种。整数表示该积木生产的数量

输出描述

对于每个积木,输出一行字符串表示该积木的信息。

输入示例
3
Circle 1
Square 2
Circle 1
输出示例
Circle Block
Square Block
Square Block
Circle Block

code:

#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <memory>using namespace std;class Block
{
public:virtual ~Block() {}virtual std::string GetBlockInfo() const = 0;
};class CircleBlock : public Block
{
public:std::string GetBlockInfo() const override{return "Circle Block";}
};class SquareBlock : public Block
{
public:std::string GetBlockInfo() const override{return "Square Block";}
};class BlockFactory
{
public:static std::unique_ptr<Block> CreateBlock(const std::string &type){if (type == "Circle"){return std::make_unique<CircleBlock>();}else if (type == "Square"){return std::make_unique<SquareBlock>();}return nullptr;}
};int main()
{int N;std::cin >> N;for (int i = 0; i < N; ++i){std::string type;int quantity;std::cin >> type >> quantity;for (int j = 0; j < quantity; ++j){std::unique_ptr<Block> block = BlockFactory::CreateBlock(type);if (block){std::cout << block->GetBlockInfo() << std::endl;}}}return 0;
}

工程模式是创建模式

可以看到积木是不变的,为一个接口;其变化的是方形积木和圆形积木,是积木接口的具体实现

开闭原则:对扩展开放,修改关闭;不修改已有代码,灵活地增加新的产品类

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词