设计模式之工厂方法

通达信抓波段指标(主图) VAR3:=IF(INBLOCK('科创板'),VART20,IF(INBLOCK('创业板') AND DATE>1200823,VART20,IF(INBLOCK('ST板块'),VART5,VART10)));VAR5:=IF(INBLOCK('科创板'),CT20,IF(INBLOCK('创业板') AND DATE>1200823,CT20,IF(INBLOCK('ST板块'),CT5,CT10)));曾涨停/紫色细K线:青字"炸",涨停未封住。曾跌停/蓝色细K线:红字"撬",跌停被打开。 阅读详情

意图

定义一个创建对象的接口
让子类决定创建哪个

  • 当一个类不知道它所必须创建的对象的类的时候
  • 将创建对象的职责委托给子类,由一个多个子类中的一个来创建

组成

  • 产品角色 product 接口
  • 具体产品角色 concreteproduct 具体的产品生产
  • 工厂角色 Factory 返回一个Product
  • 具体工厂角色ConcreteFactory 重定义Factory, 返回ConreteProduct实例
    Created with Raphaël 2.1.0factoryfactoryconcretefactoryconcretefactory

client 创建具体工厂A,具体工厂A创建具体的产品a;
不同的工厂创建对应的产品, 如飞机工厂创建飞机, 坦克工厂生产坦克;

// now weapons need to make, such as tank, battleplane...
// use factory method, we need the:
//1. abstract factory,  concretefactory(for producting concrete weapons: airplanefactory, tankfactory);
//2. abstract product, concreteproduct
// client use factory to create concreteproducts
class client
{
public: 
    // battleplane 
    AFactroy *afac = new BattleplaneFactory();
    AWeapon  *apro = afac->Product(); // battleplane
    apro->fighting();
    //  tank
    afac = new TankFactory();
    apro = afac->Product();
    apro->fighting();
}
// Abstract factory
class AFactory
{
    public:
    virtual Weapon* Product() = 0;
}
// ConcreteFactory
class BattlePlaneFactory
{
public:
    vitrual Weapon* Product()
    {
    cout<<"BatllePlane is Create!"<<endl;
    return new BattlePlane();  // factory create a plane
    }
}
class TankFactory
{
public:
    virtual Weapon* Product()
    {
    cout<<"Tank is Create!"<<endl;
    return new Tank();
    }
}
// abstract product
class Weapon
{
public:
    virtual void fighting() = 0;
}
// concrete produc
class BattlePlane : public Weapon
{
public:
    virtual void fighting(){
    cout<<"BattlePlane is Create"<<endl;
    }
}
// ...... the tank is same

总结

  • client用户需要使用一种产品, 而该产品有很多类别, 且可能有很多厂商(供应者), 这时就可以考虑使用该模式,;1. 获得具体工厂对象; 2. 制造相应的产品; 3. 使用
  • abstrat factory抽象工厂为使用者提供众多工厂的接口, 比如这些工厂必须能生产所需的物品概况,如房子, 武器..
  • abstrat product抽象产品则是为使用者提供众多产品的具体用法接口,比如房子有:三室, 二室… 武器有飞机, 坦克…, 用户可以使用这些接口去完成一些事,比如: 出租, 打仗
  • concrete factroy具体工厂生产它所能制造出来的武器
  • concrete product具体产品完成它自己的功能
  1. 抽象工厂操作抽象对象,具体工厂得到具体对象;
  2. 工厂产生对象,对象完成具体操作;
  3. 定义了一个创建产品的接口,让产品的实例化延迟到子类;
Flutter:如何在Android中实现串口通信调试 本文介绍如何通过flutter_libserialport插件在Flutter中实现串口通信调试。 阅读详情

相关推荐

SAP SD信贷管理实战:从配置到风险控制的完整指南(附后台路径)

本文详细解析了SAP SD信贷管理的完整配置流程与风险控制策略,涵盖信贷控制范围设置、风险分级机制及动态控制配置。通过实战案例和后台路径指引,帮助企业实现从客户信用评估到实时监控的全流程管理,有效降低坏账风险并优化资金安全。

3a9bq4r8t2y的博客 212

CEM和BBHE

逆光图像处理CEMBBHE代码CEMBBHE 今天又了解到了两种对亮度处理的方法。分别是CEM和BBHE。 参考: CEM_matlab. BBHE_matlab.BBHE_C++. CEM 单纯的CEM公式比较简单,原理和公式如下 根据网上一个matlab程序复写了一遍python的,灰度图是有效果的。彩色图片下我一开始用HSV空间中拿出V分量,会产生色差。 对rgb图像就对三个通道都进行了c...

H_ran16的博客 2129

拆解爆火AI图文日报!用扣子(Coze)工作流,10分钟实现自动化新闻早报

当用户提供一则新闻内容时,仔细分析新闻中的关键信息。提取新闻事件的核心要点,包括事件主体、发生时间、地点、主要情节等。用简洁的语言对新闻进行总结,控制在[X]字以内(可根据实际需求设定字数限制)。若用户提供多条新闻,对比各新闻之间的异同点。从事件类型、影响范围、发展趋势等方面进行分析。综合总结多条新闻的整体情况,以有条理的方式呈现给用户。

一身都是月 2426

BBHE

% clc; % clear all % close all; % I0=imread('d:\faceData\AR\m-027-01.pgm'); %读入JPG彩色图像文件 function pic=BBHE(I0,meanv); if size(I0,3)==3 I=rgb2gray(I0); else I=I0; end

todayq的专栏 9686

单相PWM整流器四象限运行原理

简述单相PWM整流器四象限运行原理。

m0_75208156的博客 8301

AMP架构下的核间通信:RPMSG与共享内存原理详解

本文以RK3568等异构多核硬件为例,深入浅出解析了AMP架构下核间通信的核心逻辑,阐明RPMSG并非替代共享内存,而是以共享内存为数据载体、硬件信箱为中断通知工具、VirtIO为数据管理规则,构建的标准化高层协议与框架,为开发者提供简洁API,实现不同操作系统核心间高效通信。

qq_61335271的博客 2049

C++设计模式 - 简单工厂,工厂方法和抽象工厂

知识的学习在于点滴记录,坚持不懈;知识的学习要有深度和广度,不能只流于表面,坐井观天;知识要善于总结,不仅能够理解,更知道如何表达! 目录 如果需要录屏资料,请私信邮箱shitou3000@qq.com获取。 ...

大秦坑王的专栏 2553

13. MIC配置

恒玄BES2700,支持3个MIC。

雪飞_海 925

设计模式:简单工厂、工厂方法、抽象工厂之小结与区别

简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解。 简单工厂简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。不修改代码的话,是无法扩展的。  工厂

superbeck的专栏 8万+

【Reality Capture 】01:Reality Capture1.5中文版安装教程(附安装包下载)

本文详细介绍了Reality Capture 1.5中文版的安装步骤。首先,下载并解压Reality Capture v1.4.0汉化版安装包,运行EpicInstaller并更改安装路径。接着,启动Epic Games Launcher,登录或注册账号后下载并安装软件。安装完成后,进入主界面并设置中文语言。此外,还提供了中文补丁的拷贝方法,将ui.xml和RealityCapture_CHS.exe文件分别放置到指定目录,并运行RealityCapture_CHS.exe以完成汉化。最后,文章提供了Rea

智慧空间实验室 1749

进阶01:Labview与OPC UA设备通信

LabVIEW通过OPC UA实现高效设备通信方案 本文介绍了使用LabVIEW与OPC UA设备通信的完整实施方案。OPC UA协议具有跨平台兼容、高安全性和高效数据交换等优势。实施步骤包括:1)安装NI OPC UA工具包;2)搭建模拟测试环境,使用OPC UA Simulation Server创建测试变量;3)编写LabVIEW程序,实现连接服务器、事件订阅、数据读写等功能。重点展示了通过用户事件实现设备主动触发的机制,当模拟变量值改变时自动触发LabVIEW事件处理。该方案验证了OPC UA在工业

weixin_38637405的博客 1401

工厂方法设计模式

目录 -工厂方法设计模式 概念定义 应用场景 角色组成 案例代码 优、缺点 简单工厂模式、抽象工厂模式 2、工厂方法模式 概念定义: 工厂方法模式,又称工厂模式、多态工厂模式和虚拟构造器模式,通过定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象。 应用场景: 当一个类不知道它所需要的对象的类时 在工厂方法模式中,客户端不需要知道具体产品类的类名,只需要知...

Aaron_2521060899的博客 702

Unity零基础到入门 ☀️| 近万字教程 对 Unity 中的 动画系统基础 全面解析+实战演练,你确定要错过吗?

Unity动画系统,Animation,Animator。 本文对Unity中的动画系统基础做了一个全面解析,还包括实战演练。近万字教程让你对Unity的动画系统有一个系统的了解,敬请品尝!

努力前行,总会成为自己心中的那道光 9万+

Java工厂方法设计模式及实现(枚举实现工厂方法设计模式)

简介 工厂方法设计模式是一种创建对象的模式,这种模式将创建对象的责任转移到工厂中。 工厂方法包含3部分内容:抽象接口、子类实现、工厂类。一般情况下工厂方法是通过传参来判断创建哪个子类的对象。当然,也可以通过枚举的方式实现工厂方法设计模式。 传统工厂方法设计模式 如下代码,通过CarFactory#createCar接收Class参数,创建子类实例 public interface Car { } ...

p7+的博客 1843

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

23种设计模式-工厂方法(Factory Method)设计模式

23种设计模式-工厂方法设计模式

Hanson的博客 2035

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【深入设计模式】工厂模式—简单工厂和工厂方法

设计模式(Design pattern)是软件工程的基础,最近在对公司项目代码进行迭代升级之后,决定把设计模式相关的知识点拉出来再重新整理一遍进行分享。学习设计模式,不仅是为了面试,更是为了在工作中能够写出易于维护、扩展性好的代码,否则不考虑设计的功能代码也是在给后人挖坑(已经深受其害)。 首先分享的是工厂模式,将这部分分为两部分,第一部分是是简单工厂模式和工厂方法模式的介绍及演进,主要介绍这两种模式结构,以及如何从简单工厂衍生出工厂方法模式。第二部分是抽象工厂模式和工厂模式在源码应用(下一篇博客进行分..

SK_Jaco的博客 1587

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

设计模式——简单工厂、工厂方法和抽象工厂的区别与联系

创建型模式中,常用的有工厂方法模式和抽象工厂模式,平时实践还包括简单工厂模式,虽然简单工厂模式不在23种设计模式中。 为了区分以上几种设计模式的差别,通过以下几个例子介绍这几种模式的使用场景以及优缺点。当然,由于本人接触设计模式时间还不长,难免有疏漏之处,欢迎各位提出意见。考虑如今有一个产品,比如椅子,该椅子可以有多种风格,比如中式的,或者美式的。如果我们不想通过设计模式,想要什么类型的椅子,就可以直接实例化某个实体类获得。“ChineseChair.java”——实体类 “Client.java”——用户

weixin_42785235的博客 1942

简单工厂设计模式和工厂方法设计模式

简单工厂设计模式   不论学习哪一个设计模式,都要知道设计模式可以给我们带来哪些好处,以及我们为什么要学习设计模式。 根据老师教导以及个人的片面经验,我认为使用设计模式的目的是 : 增强代码的复用性以及可维护性。 可维护性就是以后是否方便扩展,增加了新的需求的话,代码是否好改,会不会出现非常难处理的问题,比如说代码没有很好地复用,构建一个对象的过程写到了很多不同的类中,如果要修改构建过程的...

333

彻底搞懂设计模式DesignPattern-工厂模式-简单工厂-工厂方法-静态工厂-抽象工厂

简单工厂 普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。 最简单的总结就是一个工厂全负责,里面有判断,用于生产实例 简单工厂模式是属于创建型模式,是工厂模式的一种。 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式 简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码) 在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式. 首先,创建二者的共同接口: public int

Ping 304

设计模式(简单工厂、工厂方法、抽象工厂模式)

设计模式(简单工厂、工厂方法、抽象工厂模式) 一、实验目的 1.熟悉建模工具。 2.掌握简单工厂模式、工厂方法模式、抽象工厂模式,并进行设计应用。 二、实验内容 1.简单工厂模式 使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,请实现该场景。现需要增加一个新的Robot类,如果传入参数R,则返回一个Robot...

Elf.筱焱的博客 960

漫谈设计模式之:简单工厂、工厂方法、抽象工厂

现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!一个产品不止一个功能,比如我们为高端人群定制了一套出行方案,这个方案里面有配备的车辆,还有人群穿戴的衣服等,这些功能合在一起就成为了“人群”这个产品的功能。弱化一个工厂类通吃的概念,将生产产品的职责交给各自的产品工厂去完成,也就是每一个产品都有一个工厂类,负责完成本身产品的生产。显而易见,只要新增一个产品,就会对工厂类进行修改;

2401_84132496的博客 1040

设计模式之工厂模式(简单工厂,工厂方法,抽象工厂)

简单工厂模式(Simple Factory) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract Factory) 简单工厂其实不是一个标准的的设计模式。 23种设计模式中只有「工厂方法模式」与「抽象工厂模式」 1. 简单工厂模式 //接口类 public interface Food { void food(); } // 实现类1 public class RiceBook implements Food{ @Override public vo.

Pole丶逐 284

设计模式——工厂方法

以下是读《设计模式——可复用面向对象软件的基础》的读书笔记。 FACTORY METHOD工厂方法   1、 意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。 2、 别名 虚构造器(Virtual Constructor) 3、 适用性 在下面情况下可以使用Factory Method模式: 当一个

Hing Kwan 1527

设计模式——工厂方法与抽象工厂方法

在说设计模式的工厂方法模式之前时,先了解了一下简单工厂。 简单工厂 简单工厂属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。 实质: 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 工厂方法...

代码使我快乐 563
上一篇: 设计模式之创建者模式
下一篇: 设计模式之简单工厂
呵离
博客等级 码龄12年 18粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值