首页
学习
活动
专区
工具
TVP
发布

设计模式--简单工厂模式

简单工厂模式是一种创建型模式,它可以根据参数的不同返回不同类的实例,通常用一个静态方法来实现工厂的功能,这个方法就叫做简单工厂。...简单工厂模式的优点是可以将对象的创建和使用分离,降低客户端的复杂度;缺点是不符合开闭原则,如果要增加新的产品类,就需要修改工厂类的代码。 以下是使用C#语言写的简单工厂模式的例子。...."); } ///定义一个简单工厂类,用于创建不同的产品对象 public class SimpleFactory { // 定义一个静态公共方法...return null; } } } static void Main(string[] args) { // 通过简单工厂类的..."); // 调用产品对象的方法,显示产品信息 p1.Show(); p2.Show(); }运行结果:图片【小结】设计模式是一种程序设计的思想

20870

设计模式简单工厂模式

概述 简单工厂模式又称静态工厂方法(Static Factory Method)模式,它不是Gof 所讲的23种设计模式之一,但是它却是我们在编码过程中经常使用的方法之一。...简单工厂模式是工厂模式中最简单的一种,它是一种实例化对象的方式,它可以用比较简单的方式隐藏创建对象的细节,一般只需要告诉工厂类一个参数,工厂类就会返回需要的产品类,但客户端看到的只是产品的抽象对象,无需关心到底是返回了哪个子类...简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。...简单工厂模式图示 简单工厂模式包含如下角色: Factory:工厂角色 工厂角色负责创建所有实例的内部逻辑。...当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求.这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利; 简单工厂模式由于使用了静态工厂方法

38710
您找到你想要的搜索结果了吗?
是的
没有找到

工厂模式——简单工厂模式

工厂模式分三类:简单工厂模式、工厂方法模式、抽象工厂模式。 首先介绍比较简单一种工厂模式——简单工厂模式。 我们以计算器作为一个例子来说明工厂模式到底是什么。...我也同样不例外,为了提高自己的编程水平,所以一点点开始学设计模式。其实在很多开源代码里也有很多经典的设计模式,不懂设计模式,真的很难读懂源代码。 既然是工厂模式,那就有一个工厂类。...package day_1_sampleFactory; /** * 简单工厂设计模式 * @author turbo * * 2016年8月31日 */ public class Main...oper.setNumberA(1); oper.setNumberB(2); System.out.println(oper.getResult()); } } 利用简单工厂模式...#到现在,就是简单工厂模式的思想,为什么不能几个if分支判断来实现计算器呢?那样岂不是代码量更少,好像更容易阅读么?

89260

设计模式 - 简单工厂模式

接下来就来看看一种设计模式简单工厂模式: 它是一种创建型模式。创建型模式:只关注对象的创建过程。...简单工厂模式定义: 定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。...上述需求的简单工厂模式下的类图: ? 水果接口: 只需要定义一个抽象的水果接口,具体的水果,由具体的水果类来完成。...该模式并不完全符合开闭原则,比传统代码有了独立结构,没有在客户端进行复杂修改。 注:简单工厂模式并不属于常用的 23 种设计模式。...简单工厂模式缺点: 工厂类是该模式下的核心,一旦崩溃,全局皆输; 增加了系统中类的个数,一定程度上加大了维护难度; 不利于系统扩展,一旦添加新产品,需要修改工厂类,不符合开闭原则; 对了,他并不完美

39720

『设计模式简单工厂模式

简单工厂模式 简单工厂模式也被称为静态工厂模式;使用简单工厂模式可以将产品的“消费”和生产完全分开,客户端只需要知道自己需要什么产品,如何来使用产品就可以了,具体的产品生产任务由具体的工厂类来实现。...简单工厂模式通过这种做法实现了对责任的分割。 缺点 当产品有复杂的多层等级结构时,工厂类只有自己,以不变应万变,就是模式的缺点。...另外,简单工厂模式通常使用静态工厂方法,这使得无法由子类继承,造成工厂角色无法形成基于继承的等级结构 工厂类集成了所有产品的创建逻辑,当工厂类出现问题,所有产品都会出现问题;还有当新增加产品都会修改工厂类...如果想要把对外创建对象的职责集中管理 和控制,可以选用简单工厂 实现 简单工厂模式的构成 具体的工厂角色:Factory;在工厂中可以调用方法生产出具体的某个类型的产品; 抽象的产品角色:Father_Product...简单工厂模式的UML ? 代码实现 别诟病我这中文写代码,问就是不是做项目,这样更容易知道自己写的啥!

31110

设计模式 -- 简单工厂模式

表述 (创建型模式) 专门定义一个类来负责创建其他类的实例,被创建的实例常常具有共同的父类 定义一个抽象类,抽象类中声明公共的特征及属性,抽象子类继承自抽象类,去实现具体操作。...工厂类根据外界需求,在工厂类中创建对应的抽象子类实例并传给外界,而对象的创建是由外界决定的,外界只需要知道抽象子类对应的参数即可,而不需要知道抽象子类的创建过程,在外界使用时甚至不用引入抽象子类 简单工厂模式类图...简单工厂模式类图 SimpleFactory(工厂类):根据传入的参数决定创建并返回哪个具体的抽象子类 Product(抽象类):定义抽象子类所需的属性和方法,子类通过继承自抽象类获取这些方法 ProductA...OperationFactory.createOperation(operatr: "-") oper.numA = 8 oper.numB = 5 let res = oper.getResult() print(res) 简单工厂模式会有一个问题

13310

设计模式~简单工厂模式

简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。 工厂模式专门负责将大量有共同接口的类实例化。...工厂模式的几种形态: 简单工厂模式(Simple Factory):又称静态工厂方法模式 工厂方法模式(Factory Method):又称多态性工厂模式或虚拟构造子模式 抽象工厂模式(Abstract...Factory): 又称工具箱模式 简单工厂模式的结构 ?...从上图可以看出,简单工厂模式涉及到工厂角色、抽象产品角色以及具体产品角色等三个角色: 工厂类角色(Creator): 担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。...简单工厂模式在java中的应用 DateFormat与简单工厂模式 示例 ?

98020

简单工厂模式

学习python有一年了,在工作中经常使用,不过多是一些基础操作和简单库的使用,受朋友打击,想学习一些深层次的内容,所以从本篇开始学习设计模式,首先是简单工厂模式。...其实很早就将设计模式作为学习过程中的一环,不过以前基础薄弱,想来用不到高深的设计模式,所以并没有去学习相关知识,感觉现在可以了就开始看书,买了两本书《设计模式:可复用面向对象软件的基础》和《大话设计模式...》,目前主要是顺序阅读《大话设计模式》并将其中C#代码用python实现,并调试通过。...学习面向对象编程思想,开始考虑通过封装,继承,多态把程序耦合度降低,再用设计模式使程序更加灵活,容易修改,并且易于复用。 简单工厂模式 简单工厂模式主要在生成类时使用,它解决的是类的创建问题。

16720

简单工厂模式

源起 最近在看程杰著作的《大话设计模式》,全书以小菜和大鸟对话的形势,由浅入深的讲解程序的设计思想,影射出一个个设计模式。...我之前虽然也使用过一些设计模式,但没有系统的学习、整理、总结,现从该书入手,拟补自己技术领域的一块空白。该书虽以C#语言为基础,但对Java程序猿来说,却不影响阅读。...本专栏记录自己学习设计模式的过程及自己的认识,争取从小菜蜕变成大鸟。...定义 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。...简单工厂模式是工厂模式家族中最简单实用的模式。 需求 使用Java来编写一个计算器控制台程序,要求输入两个数和运算符号,得到结果。

79100

简单工厂模式

简单工厂模式 简单工厂模式又叫静态工厂方法,由一个工厂对象决定创建某一种对象类的实例,这种类型的设计模式属于创建型模式,在简单工厂模式中,可以根据参数的不同返回不同类的实例,简单工厂模式专门定义一个类来负责创建其他类的实例...描述 简单工厂模式目的是定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行,主要解决接口选择的问题,让其子类实现工厂接口,返回的也是一个抽象的产品。...客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以减少使用者的记忆量。...使用简单工厂模式将会增加系统中类的个数,在一定程序上增加了系统的复杂度和理解难度。...简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构。

28920

简单工厂模式

设计模式的目的是让代码易维护、易扩展,不能为了模式模式,因此一个简单的工具脚本是不需要用到任何模式的。 简单工厂模式又叫静态工厂方法模式,工厂模式家族中最简单的一种模式。...简单工厂模式的好处是可以将产品对象的细节封装在其实现类的内部,改变一个产品对象具体实现不会影响其他产品。可扩展性强,当需要新增产品类型时,只需要添加对应的实现类,然后修改工厂,增加一个判断分支即可。...另外一个比较典型的适合简单工厂模式的例子是计算器,计算器需要支持各种计算操作,比如加、减、乘、除、平方、立方、平方根、阶乘等等。...简单工厂模式的组成要素 工厂函数 负责具体产品对象的创建工作,是该模式的核心。当场景比较复杂时,可能需要用一个工厂类来负责产品的创建。...,因此一般只在很简单的情况下应用。

23010

简单工厂模式

简单工厂模式: 含义:简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。...因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。...问题 何时使用 简单工厂模式,我的理解是:某类产品的成产线。通过设置不同的参数,生产出同一类别下不同形态的产品。...那就很简单,在新建个条形图的类。然后修改一下工厂类ChartFactory。看似简单,但是产品多的情况下每次都要去修改工厂类无疑会造成维护困难。逻辑复杂。...由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。 至此,简单工厂模式就能明白了吧。

39510

简单工厂模式

简单工厂模式概述 ---- 定义:定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类 在简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此简单工厂模式又被成为静态工厂方法...这时候,我这家 披萨店就可以看做工厂(Factory),而生产出来的披萨被成为产品(Product),披萨的名称则被称为参数,工厂可以根据参数的不同返回不同的产品,这就是简单工厂模式 简单工厂模式的结构与实现...简单工厂模式的优缺点和适用环境   ---- 简单工厂模式的优点     (1)工厂类包含必要的逻辑判断,可以决定在什么时候创建哪一个产品的实例。...(这也是我在开始的披萨店里遇到没有的披萨的解决情况) 简单工厂模式的缺点     (1)工厂类集中了所有产品的创建逻辑,职责过重,一旦异常,整个系统将受影响     (2)使用简单工厂模式会增加系统中类的个数...简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构。

40920

简单工厂模式

简介 简单工厂模式 (Simple Factory) 又叫静态工厂方法(Static Factory Method)模式。...简单工厂模式通常是定义一个工厂类,这个类可以根据不同变量返回不同类的产品实例。 简单工厂模式是一种对象创建型模式 (可参考 设计模式 创建型模式)。但是简单工厂模式不属于23种Gof设计模式之一。...图-简单工厂模式结构图 Product (Operation) : 产品角色,简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。...通过使用简单工厂模式,用户无需了解对象如何创建的,只要传入必要信息就可以了。 缺点 工厂类集中了所有实例的创建逻辑,违背了高内聚责任分配原则。...推荐阅读 本文属于 设计模式系列 。 简单工厂模式属于工厂模式家族,欢迎参考阅读 工厂方法模式 、抽象工厂方法模式 。 参考资料 《大话设计模式》 《HeadFirst设计模式

44280

简单工厂模式

创建型模式概述 2. 简单工厂模式概述 简单工厂模式基本实现流程 简单工厂模式的代码实现 简单工厂模式的应用实例 创建对象与使用对象 实例分析 何时不需要工厂?...简单工厂模式概述 简单工厂模式基本实现流程 具体产品类:将需要创建的各种不同产品对象的相关代码封装到具体产品类中 抽象产品类:将具体产品类公共的代码进行抽象和提取后封装在一个抽象产品类中 工厂类:提供一个工厂类用于创建各种产品...,而无须知道其创建细节 简单工厂模式结构:简单工厂模式包含以下3个角色: Factory(工厂角色) Product(抽象产品角色) ConcreteProduct(具体产品角色) 简单工厂模式的代码实现...现使用简单工厂模式来设计该图表库。...简单工厂模式的简化 将抽象产品类和工厂类合并,将静态工厂方法移至抽象产品类中 简单工厂模式的优缺点与适用环境 模式优点 实现了对象创建和使用的分离 客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可

28510

简单工厂模式

一、简单工厂模式的相关概念: 1、定义:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式。...每个类的主要功能: 简单工厂:简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。...抽象产品:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 具体产品:是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。...二、C++程序示例 1 // 简单工厂模式.cpp : 定义控制台应用程序的入口点。...所以要将69行中creat_fruit(num);声明为静态成员函数static fruit* creat_fruit(int name_num);估计这就是简单工厂模式又叫做静态工厂模型的原因吧。

42990
领券