创建型模式 简单工厂模式
创建型模式 简单工厂模式
/*** 创建型模式 简单工厂模式* 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。** 1.工厂(Creator)角色* 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。* 2.抽象(Product)角色* 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。* 3.具体产品(Concrete Product)角色* 简单工厂模式所创建的具体实例对象**///思想: 核心思想是用一个工厂,来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。 //元素分析: //抽象产品类:水果类 //具体的水果了:香蕉类、苹果类、梨子 //优点 适用于不同情况创建不同的类时 //缺点 客户端必须要知道基类和工厂类,耦合性差 增加一个产品,需要修改工厂类 #include <iostream>class Fruit { public:virtual void getFruit() = 0;virtual ~Fruit() {} };class Banana: public Fruit { public:virtual void getFruit() override{std::cout << "我是香蕉" << std::endl;} };class Pear: public Fruit { public:virtual void getFruit() override{std::cout << "我是梨子" << std::endl;} };class Factory { public:static Fruit * Create(char * name){Fruit *tmp = nullptr;if (strcmp(name, "banana") == 0){tmp = new Banana();} else if (strcmp(name, "pear") == 0){tmp = new Pear();}else{std::cout << "不支持" << std::endl;tmp = nullptr;}return tmp;} };void mytest() {Fruit *fruit = nullptr;fruit = Factory::Create("banana");if (fruit == nullptr){std::cout << "创建香蕉失败" << std::endl;}fruit->getFruit();delete fruit;fruit = nullptr;fruit = Factory::Create("banana");if (fruit == nullptr){std::cout << "创建梨子失败" << std::endl;}fruit->getFruit();delete fruit;fruit = nullptr;return; }int main() {mytest();system("pause");return 0; }
创建型模式 简单工厂模式相关推荐
- 设计模式-创建型模式-简单工厂模式
工程地址:设计模式-简单工厂源码-C++文档类资源-CSDN下载C++设计模式-创建型模式-简单工厂模式源码更多下载资源.学习资料请访问CSDN下载频道.https://download.csdn.n ...
- 创建型设计模式之工厂模式
文章目录 一.工厂设计模式 二.工厂设计模式详解 1.简单工厂模式 2. 工厂方法模式 3. 抽象工厂模式 总结 一.工厂设计模式 工厂模式就类比实际生活中的工厂,在实际生活中,用户从来不会关系一个物 ...
- C++设计模式 | 四种创建型模式——简单工厂模式、工厂方法模式、抽象工厂模式、单例模式...
简单工厂模式 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> using namespa ...
- 每天学习一个设计模式(八):创建型之抽象工厂模式
目录 一.基本概念 二.通俗解释 三.应用场景 1.使用简单工厂模式的解决方案 2.抽象工厂模式 抽象工厂模式结构 在什么情况下应当使用抽象工厂模式 抽象工厂模式的起源 四.抽象工厂模式的优缺点 抽象 ...
- 创建型设计模式——抽象工厂模式
1.什么是抽象工厂模式? 抽象工厂模式: 定义了一个interface用于创建相关或有依赖关系的对象簇,而无需指明具体的类. 抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合. 从设计层面看,抽 ...
- JAVA设计模式-创建模式-工厂模式-简单工厂模式/静态工厂模式
简单工厂模式Simple Factory 为什么要有设计模式? 简单工厂模式的类图 简单工厂模式的例子 产品 生产者 消费者 执行结果 后记 鸣谢 为什么要有设计模式? 一个有价值的系统总是会因为需求 ...
- 工厂模式--简单工厂模式--抽象工厂模式
工厂模式 作用:实现创建者与调用者的分离 简单工厂模式.工厂方法模式.抽象工厂模式,都是属于创建型设计模式.严格上来说,简单工厂模式不属于23设计模式之一,因为它违背了开闭原则. ========== ...
- 工厂模式——简单工厂模式、工厂方法模式和抽象工厂模式
1.简述 工厂模式包括简单工厂模式.工厂方法模式和抽象工厂模式,属于创建型模式. 2.不使用工厂模式 (1)类图分析 一个接口Computer,接口有两个实现类HP和Apple,同时有一个测试类Cli ...
- 『创建型』简单工厂SimpleFactory、工厂方法FactoryMethod、抽象工厂AbstractFactory
为什么80%的码农都做不了架构师?>>> 几点说明 永远不要纠结于在什么时候使用什么模式 永远不要纠结于什么模式适用于什么情景 永远不要去死记任何的模式 并不是说,23种设计模 ...
最新文章
- html中运行php脚本,php脚本在html文件中
- linux pwm控制蜂鸣器 滴滴_兴安盟KOBISHI电磁蜂鸣器BZ-21BLAC24V保证
- 如果不发论文,我们用什么证明自己的科研实力?
- 【LeetCode】【HOT】49. 字母异位词分组(递归)
- python备份目录下文件夹_Python备份目录及目录下的全部内容的实现方法
- ATEN瞄准专业级影音市场,发表全新VanCryst™视频系列产品线
- python 等号 什么编码_Python运算符与编码
- 网页设计心得HTML心得体会3000,网页制作的心得体会
- windows vs2012 cuda6.5 caffe 简单安装方法
- 图像处理中的高斯滤波器
- 微信小程序怎么用?小程序有什么用?之501~600
- C#两套WPF,看板和WPF工业组件
- NVIDIA 图像显卡参数列表
- 关于即将到来的软件行业的降维打击的几点想法
- js重新加载iframe框架
- 1055: 兔子繁殖问题 ZZULIOJ
- 深度学习--综述前言
- 用开源的协同办公OA项目,做一个考勤系统
- Service Mesh的未来将与Knative和Apahce Whisk等技术和谐共存——采访RedHat的Istio产品经理...
- el-date-picker 实现禁止选择今日以后的日期,以及时间跨度不超过365天,和设置默认选择日期,解决选择当天无效问题
热门文章
- python解一元二次方程步骤-一元二次方程解法的实现(Python)
- python要不要装pycharm-subli(python要不要装pycharm)
- LeetCode UTF-8 Validation
- LeetCode Remove Linked List Elements
- 《Effective Java》 读书笔记(持续更新)
- 爬虫--用python中requests和urllib模块爬取图片
- A Guide to Python's Magic Methods
- activiti 表——介绍
- 【Python】torrentParser1.00
- Table——高淇JAVA300讲笔记之Guava