[设计模式]工厂方法模式
工厂方法模式缺点:
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;
}
测试结果:
[设计模式]工厂方法模式相关推荐
- 4. 星际争霸之php设计模式--工厂方法模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- java 工厂方法_java设计模式-工厂方法模式
1.工厂方法(FactoryMethod)模式的定义 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中.这满足创建型模式中所要求的"创建与使用相分离" ...
- 设计模式 | 工厂方法模式及典型应用
工厂方法模式 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化.工厂方法模式让一个类的实例化延迟到其子类. 工厂方法模式又简称为工厂 ...
- python工厂模式 django_python设计模式-工厂方法模式
题目:假设你有一个 pizza 店,功能包括下订单.做 pizza,你的代码会如何写呢? def order_pizza(): pizza = Pizza() pizza.prepare() pizz ...
- 工厂方法模式_1天1个设计模式——工厂方法模式
意图 工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型. 问题 假设你正在开发一款物流管理应用.1.0版本只能支持处理卡车运输,因此大部分的代码都位 ...
- [设计模式] ------ 工厂方法模式
工厂方法模式 手机厂造手机,肥皂厂造肥皂,药品厂造药品. 假设有一大类对象A1,A2,A3,A4-他们都有一个共同的父类A A1可以想成是手机,A2可以想成肥皂- (下面例子的A1Factory就是手 ...
- JAVA设计模式 - 工厂方法模式
工厂方法模式(Factory Pattern) 是一种创建型设计模式 , 它是Java中最常用的设计模式之一 . 1 . 工厂方法模式的定义 定义一个创建对象的接口 , 让子类决定实例化哪一个类 . ...
- Java设计模式—工厂方法模式抽象工厂模式
工厂方法模式与抽象工厂模式都是设计模式中重要而且常见的模式. 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 通用类图如下: 在 ...
- C#设计模式--工厂方法模式
0.C#设计模式-简单工厂模式 设计模式: 工厂方法模式(Factory Method Pattern) 介绍:简单工厂模式是要在工厂类中通过数据来做个决策,在工厂类中的多个类中实例化出来其中一个要用 ...
- 设计模式 - 工厂方法模式 - 基于 Java 实现
常见和工厂有关的设计模式 和工厂相关的设计模式主要有三种,工厂方法模式,抽象工厂模式: 在前面的博客中介绍了简单工厂模式,本篇博客主要介绍的是工厂方法模式 什么是工厂方法模式 工厂方法模式是简单工厂的 ...
最新文章
- unittest笔记
- linux sftp 中文,Linux(CentOS)上配置 SFTP服务器
- Golang gRPC实践 连载六 内置Trace
- sqlplus执行mysql_在SQLPLUS启动和停止Oracle数据库
- Ehab and the Expected XOR Problem
- 基于struts2的文件上传下载
- 化验室计算机管理制度,实验室试剂管理制度
- 用户空间访问I2C设备驱动
- Linux下添加普通帐号
- 各行业大数据可视化界面参考
- 购物商城Web开发第二十三天
- Laravel 5 的 Simple Captcha 包
- html设置数组的方法,js改变原数组的方法有哪些?
- 关于网站主页的界面设计不同风格的探索
- Python2解决的中文乱码问题
- C++进阶教程之预存处理器
- numpy - np.asarray
- Eclipse设置智能提示
- java 8 64位官方下载_Java 8下载 Java 8.0U181官方正式版(32位/64位) 下载-脚本之家
- matlab 带积分的方程,在Matlab中实现积分方程的迭代解
热门文章
- [转]Python 列表(List) 的三种遍历(序号和值)方法
- 从C#开始的面向对象编程经典自学教程
- centos 7下安装mysql_Centos7下安装MySQL5.7(数据库的最全安装方法)
- 这些全国各地甜点,你都吃过了吗?
- 直男约会能有多奇葩​?
- 2018年最后一个月最值得关注的13个优质公号
- 每个程序员都应该知道的基础数论
- JDK安装及java环境配置_JDK安装及Java环境变量配置
- python七夕快乐图片_提前祝七夕快乐图片
- 空值为0非空为1_万达广场4周年,1降到底!0元送万张杂技团门票、人气餐饮6.8折,这波周年庆我先锁为敬...