工厂方法模式缺点:
1.类的个数成倍增加,导致类越来越多,增加维护成本。

2.增加了系统的抽象性和理解难度。
(判断生产什么,又变成让客户端来判断了,简单工厂模式是由工厂判断)

工厂方法模式优点:
1.符合开闭原则。

简单工厂模式+“开闭原则” = 工厂方法模式

代码如下:

#include <iostream>
using namespace std;class AbstractFruit
{public:virtual void showName() = 0;
};class Apple :public AbstractFruit
{public:virtual void showName(){cout << "我是苹果" << endl;}
};class Banana :public AbstractFruit
{public:virtual void showName(){cout << "我是香蕉" << endl;}
};class Pear :public AbstractFruit
{public:virtual void showName(){cout << "我是梨子" << endl;}
};//抽象工厂
class AbstractFruitFactor
{public:virtual AbstractFruit *CreateFruit() = 0;
};class AppleFactor : public AbstractFruitFactor
{public:virtual AbstractFruit *CreateFruit(){return new Apple;}
};class BananaFactor : public AbstractFruitFactor
{public:virtual AbstractFruit *CreateFruit(){return new Banana;}
};class PearFactor : public AbstractFruitFactor
{public:virtual AbstractFruit *CreateFruit(){return new Pear;}
};void test01()
{AbstractFruitFactor *factor = nullptr;AbstractFruit *fruit = nullptr;factor = new AppleFactor;fruit = factor->CreateFruit();fruit->showName();delete fruit;delete factor;factor = new BananaFactor;fruit = factor->CreateFruit();fruit->showName();delete fruit;delete factor;factor = new PearFactor;fruit = factor->CreateFruit();fruit->showName();delete fruit;delete factor;}int main()
{test01();return 0;
}

测试结果:

[设计模式]工厂方法模式相关推荐

  1. 4. 星际争霸之php设计模式--工厂方法模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  2. java 工厂方法_java设计模式-工厂方法模式

    1.工厂方法(FactoryMethod)模式的定义 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中.这满足创建型模式中所要求的"创建与使用相分离" ...

  3. 设计模式 | 工厂方法模式及典型应用

    工厂方法模式 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化.工厂方法模式让一个类的实例化延迟到其子类. 工厂方法模式又简称为工厂 ...

  4. python工厂模式 django_python设计模式-工厂方法模式

    题目:假设你有一个 pizza 店,功能包括下订单.做 pizza,你的代码会如何写呢? def order_pizza(): pizza = Pizza() pizza.prepare() pizz ...

  5. 工厂方法模式_1天1个设计模式——工厂方法模式

    意图 工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型. 问题 假设你正在开发一款物流管理应用.1.0版本只能支持处理卡车运输,因此大部分的代码都位 ...

  6. [设计模式] ------ 工厂方法模式

    工厂方法模式 手机厂造手机,肥皂厂造肥皂,药品厂造药品. 假设有一大类对象A1,A2,A3,A4-他们都有一个共同的父类A A1可以想成是手机,A2可以想成肥皂- (下面例子的A1Factory就是手 ...

  7. JAVA设计模式 - 工厂方法模式

    工厂方法模式(Factory Pattern) 是一种创建型设计模式 , 它是Java中最常用的设计模式之一 . 1 . 工厂方法模式的定义 定义一个创建对象的接口 , 让子类决定实例化哪一个类 . ...

  8. Java设计模式—工厂方法模式抽象工厂模式

    工厂方法模式与抽象工厂模式都是设计模式中重要而且常见的模式.       工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 通用类图如下: 在 ...

  9. C#设计模式--工厂方法模式

    0.C#设计模式-简单工厂模式 设计模式: 工厂方法模式(Factory Method Pattern) 介绍:简单工厂模式是要在工厂类中通过数据来做个决策,在工厂类中的多个类中实例化出来其中一个要用 ...

  10. 设计模式 - 工厂方法模式 - 基于 Java 实现

    常见和工厂有关的设计模式 和工厂相关的设计模式主要有三种,工厂方法模式,抽象工厂模式: 在前面的博客中介绍了简单工厂模式,本篇博客主要介绍的是工厂方法模式 什么是工厂方法模式 工厂方法模式是简单工厂的 ...

最新文章

  1. unittest笔记
  2. linux sftp 中文,Linux(CentOS)上配置 SFTP服务器
  3. Golang gRPC实践 连载六 内置Trace
  4. sqlplus执行mysql_在SQLPLUS启动和停止Oracle数据库
  5. Ehab and the Expected XOR Problem
  6. 基于struts2的文件上传下载
  7. 化验室计算机管理制度,实验室试剂管理制度
  8. 用户空间访问I2C设备驱动
  9. Linux下添加普通帐号
  10. 各行业大数据可视化界面参考
  11. 购物商城Web开发第二十三天
  12. Laravel 5 的 Simple Captcha 包
  13. html设置数组的方法,js改变原数组的方法有哪些?
  14. 关于网站主页的界面设计不同风格的探索
  15. Python2解决的中文乱码问题
  16. C++进阶教程之预存处理器
  17. numpy - np.asarray
  18. Eclipse设置智能提示
  19. java 8 64位官方下载_Java 8下载 Java 8.0U181官方正式版(32位/64位) 下载-脚本之家
  20. matlab 带积分的方程,在Matlab中实现积分方程的迭代解

热门文章

  1. [转]Python 列表(List) 的三种遍历(序号和值)方法
  2. 从C#开始的面向对象编程经典自学教程
  3. centos 7下安装mysql_Centos7下安装MySQL5.7(数据库的最全安装方法)
  4. 这些全国各地甜点,你都吃过了吗?
  5. 直男约会能有多奇葩​?
  6. 2018年最后一个月最值得关注的13个优质公号
  7. 每个程序员都应该知道的基础数论
  8. JDK安装及java环境配置_JDK安装及Java环境变量配置
  9. python七夕快乐图片_提前祝七夕快乐图片
  10. 空值为0非空为1_万达广场4周年,1降到底!0元送万张杂技团门票、人气餐饮6.8折,这波周年庆我先锁为敬...