设计模式:简单工厂模式(Simple Factory)

QT设计模式:工厂模式 工厂模式是一种设计模式,用于将对象的创建逻辑与使用者分离,以实现对象的创建和使用的解耦。工厂模式提供了一个统一的接口来创建对象,而客户端代码只需通过该接口来请求所需的对象,而不需要知道具体的对象创建细节。 阅读详情

设计模式:简单工厂模式(Simple Factory)

简单工厂模式(Simple Factory)属于创建型模式(Creational Pattern)的一种。

创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。

创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。创建型模式隐藏了类的实例的创建细节,通过隐藏对象如何被创建和组合在一起达到使整个系统独立的目的。

模式动机

意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等), 这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式。

模式定义

简单工厂模式(Simple Factory)又称为静态工厂方法(Static Factory Method)模式。

在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

模式结构

简单工厂模式(Simple Factory)包含以下角色:

  1. 工厂(Factory):工厂角色负责实现创建所有实例的内部逻辑。
  2. 抽象产品(Abstract Product):定义了产品的共同接口或抽象类。它可以是具体产品类的父类或接口,规定了产品对象的共同方法。
  3. 具体产品(Concrete Product):实现了抽象产品接口,定义了具体产品的特定行为和属性。具体产品是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。

在这里插入图片描述

时序图

在这里插入图片描述

模式实现

简单工厂类 SimpleFactory.h:

#ifndef _SIMPLE_FACTORY_H_
#define _SIMPLE_FACTORY_H_

#include <string>
#include "ConcreteProductA.h"
#include "ConcreteProductB.h"

class SimpleFactory
{
public:
	static AbstractProduct* createProduct(const std::string& productType)
	{
		if (productType == "A")
			return new ConcreteProductA();
		else if (productType == "B")
			return new ConcreteProductB();
		return nullptr;
	}
};

#endif // !_SIMPLE_FACTORY_H_

抽象产品类 AbstractProduct.h:

#ifndef _ABSTRACT_PRODUCT_H_
#define _ABSTRACT_PRODUCT_H_

#include <iostream>

class AbstractProduct
{
public:
	virtual void use() = 0;
};

#endif // !_ABSTRACT_PRODUCT_H_

具体产品A类 ConcreteProductA.h:

#ifndef _CONCRETE_PRODUCT_A_H_
#define _CONCRETE_PRODUCT_A_H_

#include "AbstractProduct.h"

class ConcreteProductA : public AbstractProduct
{
public:
	void use() override
	{
		std::cout << "Using Concrete Product A" << std::endl;
	}
};

#endif // !_CONCRETE_PRODUCT_A_H_

具体产品B类 ConcreteProductB.h:

#ifndef _CONCRETE_PRODUCT_B_H_
#define _CONCRETE_PRODUCT_B_H_

#include "AbstractProduct.h"

class ConcreteProductB : public AbstractProduct
{
public:
	void use() override
	{
		std::cout << "Using Concrete Product B" << std::endl;
	}
};

#endif // !_CONCRETE_PRODUCT_B_H_

测试

测试代码 main.cpp:

#include <stdlib.h>
#include "SimpleFactory.h"
#include "ConcreteProductA.h"
#include "ConcreteProductB.h"

int main()
{
	SimpleFactory simpleFactory;
	AbstractProduct* productA = simpleFactory.createProduct("A");
	AbstractProduct* productB = simpleFactory.createProduct("B");

	if (productA)
		productA->use();
	if (productB)
		productB->use();
	
	delete productA;
	delete productB;

	system("pause");
	return 0;
}

运行结果:

在这里插入图片描述

模式分析

  • 将对象的创建和对象本身业务处理分离可以降低系统的耦合度,使得两者修改起来都相对容易。
  • 在调用工厂类的工厂方法时,由于工厂方法是静态方法,使用起来很方便,可通过类名直接调用,而且只需要传入一个简单的参数即可,在实际开发中,还可以在调用时将所传入的参数保存在XML等格式的配置文件中,修改参数时无须修改任何源代码。
  • 简单工厂模式最大的问题在于工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,这一点与开闭原则是相违背的。
  • 简单工厂模式的要点在于:当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。

实例:Qt 控件类

在开发一个用户界面过程中,我需要三种控件类型,分别是按钮、图像和文本。这些控件都有一些工厂的特点,比如都有位置属性(位于界面的哪个地方)、大小属性(长度和宽度)等等。因此创建一个Item(参考Qt)作为它们的父类,Button(按钮)、Image(图像)和Text(文本)都继承于它。

下面是参考代码:

#include <iostream>  
#include <memory> 
#include <string> 
#include <stdlib.h>
using namespace std;

// Item 父类
class Item
{
protected:
	int m_width;
	int m_height;

public:
	Item(int width, int height) : m_width(width), m_height(height) {}
	virtual ~Item() {}
};

// Button 子类
class Button : public Item
{
public:
	Button(int width, int heght) : Item(width, heght)
	{
		cout << "用户界面创建了一个按钮" << endl;
	}
};

// Image 子类
class Image : public Item
{
public:
	Image(int width, int heght) : Item(width, heght)
	{
		cout << "用户界面创建了一个图像" << endl;
	}
};

// Text 子类
class Text : public Item
{
public:
	Text(int width, int heght) : Item(width, heght)
	{
		cout << "用户界面创建了一个文本" << endl;
	}
};

// ItemFactory 工厂类
class ItemFactory
{
public:
	static unique_ptr<Item> createItem(string itemType)
	{
		if (itemType == "button")
		{
			// newItem = new Button(50, 50);
			return make_unique<Button>(50, 50);
		}
		else if (itemType == "image")
		{
			// newItem = new Image(100, 100);
			return make_unique<Image>(100, 100);
		}
		else if (itemType == "text")
		{
			// newItem = new Text(100, 30);
			return make_unique<Text>(100, 30);
		}
		return NULL;
	}
};

int main()
{
	ItemFactory itemFac;
    auto pI1 = itemFac.createItem("button"); // 创建了一个 Button
    auto pI2 = itemFac.createItem("image"); // 创建了一个 Image
    auto pI3 = itemFac.createItem("text"); // 创建了一个 Text
 
//    delete pI1;
//    delete pI2;
//    delete pI3;
		
	system("pause");
	return 0;
}

我们使用简单工厂模式后,创建各种各样的控件,就不用和它们控件本身的类打交道(Button、Image、Text),而是通过ItemFactory的成员函数createFactory,将不同字符串标识传入进去,从而返回不同的控件,这其实就是一种封装变化。

优缺点

优点:

  1. 封装性好: 简单工厂模式封装了对象创建的细节,客户端不需要直接实例化具体的产品类。这有助于隐藏具体产品类的实现细节,使得客户端代码更加简洁和易于维护。
  2. 解耦: 简单工厂模式降低了客户端与具体产品类之间的耦合度。客户端只需要与工厂类交互,而不需要知道具体产品类的实现细节。这有助于减少代码的依赖性和提高系统的可维护性。
  3. 代码复用: 工厂类集中了产品对象的创建逻辑,可以在多个地方重用该工厂类来创建对象,提高了代码的复用性。
  4. 扩展性好: 当需要添加新的产品类时,只需要在工厂类中添加相应的创建逻辑,而无需修改客户端代码。这符合开闭原则,即对扩展开放,对修改封闭。

缺点:

  1. 违反单一职责原则: 简单工厂类通常负责创建多种类型的产品对象,这可能导致工厂类的职责过多,违反了单一职责原则。当产品类型较多时,工厂类的代码可能会变得庞大而难以维护。
  2. 类型判断逻辑复杂: 简单工厂模式通常需要根据客户端提供的参数或类型信息来判断需要创建哪种类型的产品对象。随着产品类型的增加,类型判断逻辑可能会变得复杂和易错。
  3. 不易于扩展新的产品族: 简单工厂模式是针对一个产品族设计的,如果需要添加新的产品族(即一组具有共同主题的产品),可能需要修改工厂类的代码,这违反了开闭原则。
  4. 不易于使用继承等面向对象特性: 简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构;由于简单工厂模式通常直接返回具体产品类的实例,而不是通过继承等面向对象特性来创建对象,因此可能无法充分利用面向对象编程的优势。

适用环境

C++ 简单工厂模式的应用场景主要包括以下几种情况:

  1. 创建对象不需要知道具体类的情况: 客户端既不需要关心创建细节,甚至连类名都不需要记住,只需要知道类型所对应的参数。
  2. 需要创建的对象较少且不会经常变动: 由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂。

模式应用

  1. JDK类库中广泛使用了简单工厂模式,如工具类java.text.DateFormat,它用于格式化一个本地日期或者时间。
    public final static DateFormat getDateInstance();
    public final static DateFormat getDateInstance(int style);
    public final static DateFormat getDateInstance(int style,Locale
    locale);
    
  2. Java加密技术。
    比如,获取不同加密算法的密钥生成器:
    public final static DateFormat getDateInstance();
    public final static DateFormat getDateInstance(int style);
    public final static DateFormat getDateInstance(int style,Locale locale);
    
Qt 工程师进阶技术23种设计模式 设计模式是解决特定问题的一系列套路,这套方案**提高代码可复用性、可读性、稳健性、可维护性及安全性**。 **23种设计模式可分为三类**:结构型模式(侧重类与对象之间的组合)、行为型模式(侧重对象之间的通信)、创建型模式(侧重对象的创建)。 `结构型模式(7种)`:代理模式、桥接模式、适配器模式、外观模式享、享元模式、组合模式、装饰器模式 `行为型模式(11种)`︰备忘录模式、访问者模式、解释器模式、迭代器模式、中介模式、观察者模式、状态模式、责任链模式、命令模式、策略模式、模板方法模式。 `创建型 阅读详情

相关推荐

使用Qt实现服务工厂

其中,PLUGIN_TYPES指定了插件类型为services,myplugininterface.h定义了插件提供的服务接口,myservice.h实现了该接口并提供了具体的服务实现。使用服务工厂,我们可以在不知道插件具体实现的情况下获取插件提供的服务接口。通过Qt的服务工厂,我们可以实现插件式的扩展机制。使用服务工厂,我们可以在不知道插件具体实现的情况下获取插件提供的服务接口。下面是一个示例,演示如何使用Qt的服务工厂实现插件加载和服务调用。使用Qt实现服务工厂。

HackLogic的博客 216

设计模式之工厂模式

工厂模式 1、简单工厂模式 1.1、定义 简单工厂模式(Simple Factory Pattern)是指有一个工厂对象决定创建出哪一种产品类的实例,不属于23种设计模式。 简单工厂是产品的工厂 1.2、应用场景 简单工厂模式适用于工厂类创建的对象较少的场景,且客户端只需要传入工厂参数,对如何创建对象的逻辑不需要关心。 1.3、缺点 工厂类的职责相对过重,增加新的产品时需要修改工厂类的判断逻辑,违背了开闭原则。 不易于扩展过于复杂的产品结构。 1.4、实例 支付接口规范: public interface

aaa31203的博客 16万+

一文讲清CAN和CANFD的区别

本文将从技术原理、协议特性到应用场景,深度解析两者的核心差异。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 3209

简单工厂模式

在日常开发中,凡是需要生成复杂对象的地方,都可以尝试考虑使用工厂模式来代替。 复杂对象指的是类的构造函数参数过多等对类的构造有影响的情况,因为类的构造过于复杂,如果直接在其他业务类内使用,则两者的耦合过重,后续业务更改,就需要在任何引用该类的源代码内进行更改,光是查找所有依赖就很消耗时间了,更别说要一个一个修改了。 工厂模式的定义: 是指定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。 按实际业务场景划分,工厂模式

Charge8的博客 5310

QMT量化交易实战:如何用通达信预警数据自动买卖股票(附完整Python代码)

本文详细介绍了如何利用QMT平台对接通达信预警数据,构建自动化股票交易系统。通过完整的Python代码示例,展示了从数据获取到订单执行的全流程,帮助投资者实现量化交易策略的自动化执行,提升交易效率。

weixin_29234423的博客 210

从零到一:ASTER L2数据获取的实战避坑指南

本文提供了一份详细的ASTER L2数据获取实战指南,涵盖账号注册、环境配置、数据检索、下载故障排除及后处理等关键步骤。特别针对NASA EarthData平台的隐形门槛和常见陷阱,给出了实用解决方案,帮助科研新手高效获取地表温度数据,适用于环境监测和城市热岛效应分析等领域。

weixin_29061425的博客 519

图说设计模式:简单工厂模式( Simple Factory Pattern )

简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。创建型模式对类的实例化过程进行了抽象,能够将对象的创建与对象的使用过程分离。简单工厂模式又称为静态工厂方法模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。

cf18862344377的博客 661

多核异构处理器核间通信:从共享内存到RPMsg协议的实战解析

在多核异构处理器架构中,核间通信是实现高效协同计算的核心技术。其基本原理是通过共享内存作为数据交换的物理媒介,配合硬件信号机制实现同步与通知。从技术价值看,它解决了不同架构核心间的数据共享与指令协同问题,是释放异构计算潜力的关键。在应用场景上,该技术广泛应用于智能物联网设备、汽车电子和工业控制等领域,用于连接高性能应用处理器与实时微控制器。本文以典型的ARM Cortex-A与Cortex-M组合为例,深入剖析了基于共享内存和RPMsg协议的通信机制,涵盖了从硬件基础到软件协议栈的完整实现链路,并提供了针对

weixin_26969269的博客 447

设计模式教程:简单工厂模式 (Simple Factory Pattern)

在开发过程中,我们常常需要根据不同的条件来生成不同的对象。比如,生成不同类型的车、饮料或者人。在这种场景下,简单工厂模式便应运而生。它通过一个工厂类来统一创建对象,从而降低了对象创建的复杂度,使得代码更加清晰、可维护。

遇见伯灵说的博客 432

如何从RHEL 8升级到RHEL 9

Red Hat 于 2022 年 5 月 17 日宣布全面推出 RHEL 9。这是 RHEL(Red Hat Enterprise Linux)的最新版本,它具有许多功能和增强功能。

u012748257的博客 1019

Multisim14.0仿真(五十九)基于74LS161的24进制计数器应用设计

它具有同步预置、异步清零功能,支持并行数据加载,并可在计数使能控制下进行二进制计数。:低电平时,在下一个时钟上升沿加载输入数据(A, B, C, D)。(多个 74LS161D 串联构成 8 位、12 位等更长计数器)。低电平时,下一个时钟上升沿加载输入数据(A, B, C, D)。:低电平有效,立即清零计数器(不受时钟控制)。均为高电平时,每个时钟上升沿计数。:两者均为高电平时,计数器才能递增。:立即清零计数器(不受时钟控制)。(通过预置初始值控制计数范围)。(计数范围:0 ~ 15,即。

corlin6688的博客 4760

设计模式1:Simple Factory Pattern(简单工厂模式)

原文:http://www.cnblogs.com/zhenyulu/articles/36462.html工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式有以下几种形态:简单工厂(Simple Factory)模式工厂方法(Factory Method)模式抽象工厂(Abstract Factory)模式

薛敬明的专栏 1796

学 Simulink—— 基于储能系统(BESS)并网逆变器的 削峰填谷(Peak Shaving & Valley Filling)功能仿真

本文详细介绍了基于储能系统(BESS)并网逆变器的削峰填谷功能Simulink仿真方法。主要内容包括:1)削峰填谷原理与典型日负荷曲线控制逻辑;2)简化系统拓扑与关键参数设置;3)分步骤建模过程,重点讲解EMS控制逻辑、SOC模型和PQ控制实现;4)典型仿真结果分析及参数调优建议;5)常见问题解决方案和工程扩展方向。通过该仿真可掌握BESS在用户侧储能、虚拟电厂等场景的核心应用,实现电网侧功率按峰谷时段规划、BESS充放电控制及并网逆变器PQ控制。文章还提供了完整的BESS/微网系列课程框架和混合微网系统进

xiaoheshang_123的博客 41

设计模式(一): 简单工厂模式( Simple Factory Pattern )

目录1.1. 模式动机1.2. 模式定义1.3. 模式结构1.4. 模式分析1.5. 简单工厂模式的优点1.6. 简单工厂模式的缺点1.7. 适用环境1.8. 模式应用1.9. 总结 1.1. 模式动机 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等), 这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同...

qq_34851243的博客 1781

11、Windows Autopilot 部署与设备注册全攻略

本文详细介绍了Windows Autopilot的完整部署流程,涵盖注册配置文件设置、注册状态页面(ESP)配置、设备注册方法(包括CSV导入、JSON注入、在线注册等)、自动化脚本实现及故障排除技巧。通过手动与PowerShell自动化两种方式指导用户完成配置,并提供流程图、最佳实践和常见问题解答,帮助IT管理员高效实现设备零接触部署与管理。

ii567的博客 342

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【c++设计模式03】创建型1:简单工厂模式(Simple Factory Pattern)

并由实现该接口或继承该抽象类的具体工厂类负责实例化对象。在工厂模式中,客户端通过调用工厂类的方法来获取所需的对象,而无需直接实例化对象。工厂类根据不同的需求条件,使用不同的逻辑或算法创建相应的对象,隐藏了对象创建的具体细节。工厂模式可以有效地降低系统的耦合度,提高代码的可维护性和可扩展性。它符合面向对象设计原则中的开放封闭原则,即对扩展开放,对修改封闭。当需要新增一种产品时,只需添加相应的具体产品类和对应的工厂类,而无需修改已有的代码。常见的工厂模式包括。

junxuezheng的博客 1115

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

设计模式(19):创建型-简单工厂模式(Simple Factory)及工厂方法模式(Factory Method)

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。 设计模式分为三种类型,共23种。 创建型模式(5):单例模式、抽象工厂模式、建造者模式...

後雪寒的专栏 632

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

设计模式一:简单工厂模式(Simple Factory Pattern)

简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它提供了一个通用的接口来创建各种不同类型的对象,而无需直接暴露对象的创建逻辑给客户端。

qq_40537587的博客 538

【设计模式从青铜到王者】第五篇:创建型模式之简单工厂模式( Simple Factory Pattern )

系列文章目录 前言 一、简单工厂模式模式动机 二、简单工厂模式模式定义 三、简单工厂模式模式结构 四、简单工厂模式时序图 五、简单工厂模式代码分析 六、简单工厂模式模式分析 七、简单工厂模式优点 八、简单工厂模式缺点 九、简单工厂模式适用环境 十、简单工厂模式模式应用 十一、简单工厂模式总结 十二、简单工厂模式进一步分析 1.简单工厂模式简介 2.简单工厂应用举例 3.简单工厂基本实现流程 4.简单工厂定义 5.简单工厂模式结构 6.简单工厂模式代码实例 1.定义抽象产品类AbstractProduct,抽

森明帮大于黑虎帮的博客 812

设计模式笔记4:简单工厂模式(Simple Factory Pattern)

一、简单工厂模式的内容 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 Simple Factory模式实际上不是GoF 23个设计模式中的一员。其

Snowball 1180

设计模式之八:简单工厂模式(Simple Factory pattern)

GOF 在《设计模式》:定义一个用于创建对象的接口,让子类决定实例化哪一个类。 工厂模式:就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式。 简单工厂模式 是对象创建型模式。 package cn.google.design.factory.simple; //抽象产品角色 public interface Car {     publi

No Excuses! Confidence! Vigorous! 2110

c++设计模式:简单工厂模式(Simple Factory Pattern)

定义: 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 场景: 我们要开一家比萨商店,定义了一个简单的披萨工厂,可以根据客户的需

编程小生的专栏 688

设计模式最简Demo:简单工厂模式[Simple Factory Pattern]

1. 程序需求实现一个计算器程序,要求能实现加减乘除等常用操作,且扩展性强。2. UML图3. Java实现Operationpackage simple_factory_pattern;public abstract class Operation { protected double numberA; protected double numberB; public abs

Yang 486

Design Pattern :Simple Factory

一、简单工厂模式: Simple Factory 不是23个经典的设计模式中的一员,但这是基础 Simple Factory模式根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个公共的父类和公共的方法。 二、它的模式角色与结构 工厂角色类Creator:工厂类在客户端的直接控制下(Creator方法)创建产品 抽象产品角色Product:定义简单工厂创建的对象

奋斗、 748

Java设计模式:简单工厂模式(Simple Factory Pattern)

工厂模式: 1)简单工厂 2)工厂模式 简单工厂模式: 通常使用静态方法,因为这样它可以不需要创建对象;缺点:不能通过继承来改变创建方法的行为。 简单工厂其实不是一个设计模式,反而更像一种编程习惯。 事例: 一个披萨店,会生产各种类型的披萨,如蔬菜类、蛤蜊类、奶酪类、意大利辣肠类等。 步骤: 1)选择一种类型的披萨,配置它的材料 2)准备、烧烤、切片、包装  UML类

D.D.U的博客 677
上一篇: FFmpeg 解码 H.264 视频出现花屏和马赛克的解决办法
下一篇: 设计模式:工厂方法模式(Factory Method)
UestcXiye
博客等级 码龄8年 9030粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值