创建型模式 工厂模式

/*** 创建型模式 工厂模式* 工厂方法模式同样属于类的创建型模式又被称为多态工厂模式 。* 符合"开放-封闭"原则 通过添加代码的方式,不是通过修改代码的方式完成功能的增强。* 工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。 * 核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。** 抽象工厂(Creator)角色  * 工厂方法模式的核心,任何工厂类都必须实现这个接口。 * 具体工厂( Concrete  Creator)角色  * 具体工厂类是抽象工厂的一个实现,负责实例化产品对象。 * 抽象(Product)角色  * 工厂方法模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 * 具体产品(Concrete Product)角色   * 工厂方法模式所创建的具体实例对象**/#include <iostream>class Fruit
{
public:virtual void sayname() = 0;virtual ~Fruit() {}
};class Banana: public Fruit
{
public:virtual void sayname() override{std::cout << "我是香蕉" << std::endl;}
};class Pear: public Fruit
{
public:virtual void sayname() override{std::cout << "我是梨子" << std::endl;}
};class AbFactory
{
public:virtual Fruit * CreateProduct() = 0;virtual ~AbFactory() {}
};class BananaFactory: public AbFactory
{
public:virtual Fruit * CreateProduct() override{return new Banana;}
};class PearFactory: public AbFactory
{
public:virtual Fruit * CreateProduct() override{return new Pear;}
};void mytest()
{AbFactory *factory = nullptr;Fruit *fruit = nullptr;factory = new BananaFactory();fruit = new Banana();fruit->sayname();delete factory;factory = nullptr;delete fruit;fruit = nullptr;factory = new PearFactory();fruit = new Pear();fruit->sayname();delete factory;factory = nullptr;delete fruit;fruit = nullptr;return;
}int main()
{mytest();system("pause");return 0;
}

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

  1. JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·简单工厂——区分“变与不变”

    JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·简单工厂--区分"变与不变" 先来说说构造器 在介绍工厂模式之前,为了辅助大家的理解,我想先在这儿给大家介绍 ...

  2. JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·抽象工厂——理解“开放封闭”

    JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·抽象工厂--理解"开放封闭" 一个不简单的简单工厂引发的命案 在实际的业务中,我们往往面对的复杂度并非数个类 ...

  3. 设计模式(20):创建型-抽象工厂模式(Abstract Factory)

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...

  4. 【创建型】工厂模式(Factory Pattern)详解

    工厂模式分为简单工厂.工厂方法.抽象工厂模式. 这一篇说一下简单工厂.工厂方法: 简单工厂 :用来生产同一等级结构中的任意产品.(不支持拓展增加产品) 工厂方法 :用来生产同一等级结构中的固定产品.( ...

  5. (创建型)设计模式——工厂模式(factory)

    ps:在以下讲述工厂模式中,模仿的场景如下:我们需要生产Car,建立相对应的CarFactory.使用CarFactory工厂来生产Car,并且可以在生产过程中进行一些处理.类图和代码如下. 1.Mo ...

  6. Java设计模式之创建型:原型模式

    一.什么是原型模式: 原型模式主要用于对象的创建,使用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象.UML类图如下: 原型模式的核心是就是原型类 Prototype,Prototype ...

  7. Java设计模式之创建型:建造者模式

    一.什么是建造者模式: 建造者模式将复杂产品的创建步骤分解在在不同的方法中,使得创建过程更加清晰,从而更精确控制复杂对象的产生过程:通过隔离复杂对象的构建与使用,也就是将产品的创建与产品本身分离开来, ...

  8. 创建型设计模模式---原型模式

    设计模式 序号 内容 链接地址 1 设计模式七大原则 https://blog.csdn.net/qq_39668819/article/details/115390615 2 创建型设计模式–工厂模 ...

  9. 创建型设计模模式---建造者模式

    设计模式 序号 内容 链接地址 1 设计模式七大原则 https://blog.csdn.net/qq_39668819/article/details/115390615 2 创建型设计模式–工厂模 ...

  10. 设计模式-创建型模式-工厂模式(工厂三兄弟) TypeScript

    设计模式-创建型模式-工厂模式(工厂三兄弟) TypeScript 简单工厂模式 定义一个接口,三个具体类.然后书写如下,通过选择,生产出相应的对象 // 定义Shape接口 interface Sh ...

最新文章

  1. python控制结构(二)_Python程序控制结构---2
  2. PHP+jQuery+Ajax实现用户登录与退出
  3. Linux SPI总线和设备驱动架构之二:SPI通用接口层
  4. php调用css类,php – 使用xpath选择css类
  5. python打包不能在其他电脑打开、找不到指定模块,pyinstaller打包移植到别的电脑报错OSError: [WinError 126] 找不到指定的模块。...
  6. logstash数据采集
  7. 基于Xml 的IOC 容器-载入配置路径
  8. SAP Spartacus 读取payment detail数据的API
  9. SpringCloud创建Config多客户端公共配置
  10. 对Redis单线程的一些看法
  11. Kernel Trick——核机制,更高维空间内积的快速计算
  12. 限制上传文件为jpg文件
  13. HDU - 5950 Recursive sequence(矩阵快速幂)
  14. stackoverflow图片大小修改
  15. 反病毒技术及其发展趋势
  16. 灰狼优化算法--简单易懂附python代码
  17. centos 7 安装snmp
  18. 网络基础-IP、端口等
  19. 个人开源项目视频播放器~ERPlayer
  20. visio和preject冲突_Office 365 和 Visio Project Pro 2019 共存安装方法

热门文章

  1. 25个优秀的Ajax技术和实例
  2. deepin终端编译c程序_Deepin Linux安装使用Visual Studio Code(VSCode)调试C++
  3. 为什么苹果内购总是失败_苹果官网送货流程将改革,最快次日达丨iPhone6s 等钉子户终于要换手机了...
  4. python编写加密程序_python编写的维吉尼亚密码加解密程序
  5. c语言 判断日期时间_C语言中不得不知的那些“关键字”和“控制语句”
  6. (10) ejb学习: Jpa的JTA事务和RESOURCE_LOCAL事务
  7. 雷军博客1999:互联网创业的黄金年代,2009年移动互联网黄金年,太准了
  8. VUE data传值
  9. Python3--unitest框架的使用
  10. 基础练习 字母图形 c语言