创建型模式 简单工厂模式

/*** 创建型模式 简单工厂模式* 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。** 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;
}

创建型模式 简单工厂模式相关推荐

  1. 设计模式-创建型模式-简单工厂模式

    工程地址:设计模式-简单工厂源码-C++文档类资源-CSDN下载C++设计模式-创建型模式-简单工厂模式源码更多下载资源.学习资料请访问CSDN下载频道.https://download.csdn.n ...

  2. 创建型设计模式之工厂模式

    文章目录 一.工厂设计模式 二.工厂设计模式详解 1.简单工厂模式 2. 工厂方法模式 3. 抽象工厂模式 总结 一.工厂设计模式 工厂模式就类比实际生活中的工厂,在实际生活中,用户从来不会关系一个物 ...

  3. C++设计模式 | 四种创建型模式——简单工厂模式、工厂方法模式、抽象工厂模式、单例模式...

    简单工厂模式 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> using namespa ...

  4. 每天学习一个设计模式(八):创建型之抽象工厂模式

    目录 一.基本概念 二.通俗解释 三.应用场景 1.使用简单工厂模式的解决方案 2.抽象工厂模式 抽象工厂模式结构 在什么情况下应当使用抽象工厂模式 抽象工厂模式的起源 四.抽象工厂模式的优缺点 抽象 ...

  5. 创建型设计模式——抽象工厂模式

    1.什么是抽象工厂模式? 抽象工厂模式:  定义了一个interface用于创建相关或有依赖关系的对象簇,而无需指明具体的类. 抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合. 从设计层面看,抽 ...

  6. JAVA设计模式-创建模式-工厂模式-简单工厂模式/静态工厂模式

    简单工厂模式Simple Factory 为什么要有设计模式? 简单工厂模式的类图 简单工厂模式的例子 产品 生产者 消费者 执行结果 后记 鸣谢 为什么要有设计模式? 一个有价值的系统总是会因为需求 ...

  7. 工厂模式--简单工厂模式--抽象工厂模式

    工厂模式 作用:实现创建者与调用者的分离 简单工厂模式.工厂方法模式.抽象工厂模式,都是属于创建型设计模式.严格上来说,简单工厂模式不属于23设计模式之一,因为它违背了开闭原则. ========== ...

  8. 工厂模式——简单工厂模式、工厂方法模式和抽象工厂模式

    1.简述 工厂模式包括简单工厂模式.工厂方法模式和抽象工厂模式,属于创建型模式. 2.不使用工厂模式 (1)类图分析 一个接口Computer,接口有两个实现类HP和Apple,同时有一个测试类Cli ...

  9. 『创建型』简单工厂SimpleFactory、工厂方法FactoryMethod、抽象工厂AbstractFactory

    为什么80%的码农都做不了架构师?>>>    几点说明 永远不要纠结于在什么时候使用什么模式 永远不要纠结于什么模式适用于什么情景 永远不要去死记任何的模式 并不是说,23种设计模 ...

最新文章

  1. html中运行php脚本,php脚本在html文件中
  2. linux pwm控制蜂鸣器 滴滴_兴安盟KOBISHI电磁蜂鸣器BZ-21BLAC24V保证
  3. 如果不发论文,我们用什么证明自己的科研实力?
  4. 【LeetCode】【HOT】49. 字母异位词分组(递归)
  5. python备份目录下文件夹_Python备份目录及目录下的全部内容的实现方法
  6. ATEN瞄准专业级影音市场,发表全新VanCryst™视频系列产品线
  7. python 等号 什么编码_Python运算符与编码
  8. 网页设计心得HTML心得体会3000,网页制作的心得体会
  9. windows vs2012 cuda6.5 caffe 简单安装方法
  10. 图像处理中的高斯滤波器
  11. 微信小程序怎么用?小程序有什么用?之501~600
  12. C#两套WPF,看板和WPF工业组件
  13. NVIDIA 图像显卡参数列表
  14. 关于即将到来的软件行业的降维打击的几点想法
  15. js重新加载iframe框架
  16. 1055: 兔子繁殖问题 ZZULIOJ
  17. 深度学习--综述前言
  18. 用开源的协同办公OA项目,做一个考勤系统
  19. Service Mesh的未来将与Knative和Apahce Whisk等技术和谐共存——采访RedHat的Istio产品经理...
  20. el-date-picker 实现禁止选择今日以后的日期,以及时间跨度不超过365天,和设置默认选择日期,解决选择当天无效问题

热门文章

  1. python解一元二次方程步骤-一元二次方程解法的实现(Python)
  2. python要不要装pycharm-subli(python要不要装pycharm)
  3. LeetCode UTF-8 Validation
  4. LeetCode Remove Linked List Elements
  5. 《Effective Java》 读书笔记(持续更新)
  6. 爬虫--用python中requests和urllib模块爬取图片
  7. A Guide to Python's Magic Methods
  8. activiti 表——介绍
  9. 【Python】torrentParser1.00
  10. Table——高淇JAVA300讲笔记之Guava