工厂类

简单工厂模式

只谈情不闲聊 提交于 2020-02-04 10:09:11
举例: $('div') React.createElement 结构: 简单工厂模式包含如下角色: Factory:工厂角色 工厂角色负责实现创建所有实例的内部逻辑 Product:抽象产品角色 抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口 ConcreteProduct:具体产品角色 具体产品角色是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。 概念: 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 优点: 工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品;简单工厂模式通过这种做法实现了对责任的分割,它提供了专门的工厂类用于创建对象。 客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以减少使用者的记忆量。 通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性。 缺点: 由于工厂类集中了所有产品创建逻辑

Java之简单工厂设计模式

醉酒当歌 提交于 2020-02-02 00:33:41
一、简单工厂设计模式 概述: 定义一个具体的工厂类负责创建各个类的实例。 演示: ①定义一个抽象父类动物类 ②定义几个子类 ③定义工厂类 ④Main方法中直接调用各个子类 优点: 客户端不需要再负责对象的创建,从而明确了各个类的职责。 缺点: 这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断地修改工厂类,不利于后期维护。 二、工厂方法模式 概述: 工厂方法模式中抽象工厂类负责定义创建对象接口,具体对象的创建工作由继承抽象工厂的具体类实现。 演示: ①定义一个动物父类,定义一个狗类,定义一个猫类,同上,略 ②定义一个工厂接口,并定义一个生产动物的抽象方法 ③定义猫和狗的生产对象工厂 ④Main方法演示 优点: 客户端不需要再负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要添加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性。 缺点: 需要额外的编写代码,增加工作量。 来源: CSDN 作者: 一名小白的进阶之路 链接: https://blog.csdn.net/qq_40275740/article/details/104131207

HttpApplication的认识与加深理解

蹲街弑〆低调 提交于 2020-02-02 00:17:14
HttpApplication对象是经由HttpApplicationFactory.GetApplicationInstance(并最终调用HttpRuntime.CreateNonPublicInstance)创建的HttpApplicationFactory它的主要任务是使用 URL 信息来查找 URL 虚拟目录和汇集的 HttpApplication 对象之间的匹配关系。 这个工厂类的行为概括为有以下几点 1、工厂类维护, HttpApplication 对象池并使用它们来处理应用程序的请求。池的寿命与应用程序的寿命相同。 2、应用程序的第一个请求到达时,工厂类提取有关应用程序类型的信息(global.asax 类)、设置用于监视更改的文件、创建应用程序状态并触发 Application_OnStart 事件。工厂类从池中获取一个 HttpApplication 实例,并将要处理的请求放入实例中。如果没有可用的对象,则创建一个新的 HttpApplication 对象。要创建 HttpApplication 对象,需要先完成 global.asax 应用程序文件的编译。 3、HttpApplication 开始处理请求,并且只能在完成这个请求后才能处理新的请求。如果收到来自同一资源的新请求,则由池中的其他对象来处理。 4、应用程序对象允许所有注册的 HTTP

常见的设计模式笔记(简单工厂模式、单例模式)

情到浓时终转凉″ 提交于 2020-01-31 02:00:43
原文链接:https://www.jianshu.com/p/e55fbddc071c 设计模式笔记 简单工厂模式 优点 将创建实例的工作与使用实例的工作分开,使用者不必关心类对象如何创建,实现了解耦; 把初始化实例时的工作放到工厂里进行,使代码更容易维护。 更符合面向对象的原则 & 面向接口编程,而不是面向实现编程。 缺点 工厂类集中了所有实例(产品)的创建逻辑,一旦这个工厂不能正常工作,整个系统都会受到影响; 违背“开放 - 关闭原则”,一旦添加新产品就不得不修改工厂类的逻辑,这样就会造成工厂逻辑过于复杂。 简单工厂模式由于使用了静态工厂方法,静态方法不能被继承和重写,会造成工厂角色无法形成基于继承的等级结构。 实例步骤: 创建抽象产品类 & 定义具体产品的公共接口; abstract class Product { public abstract void Show(); } 创建具体产品类(继承抽象产品类) & 定义生产的具体产品; class ProductA extends Product{ @Override public void Show() { System.out.println("生产出了产品A"); } } class ProductB extends Product{ @Override public void Show() { System.out

Spring从入门到进阶--Spring入门

隐身守侯 提交于 2020-01-30 01:21:17
Spring从入门到进阶–Spring入门 第1章 Spring 介绍 1-1. Spring的概述 1、Spring是什么 一个轻量级的开源框架,可以使我们的开发变得简单,是一个一站式的框架。 -** 2、Spring的优点有哪些?** 1.方便解耦,简化开发 2.AOP编程的支持 3.声明式事务的支持 4.方便程序的测试 5.方便继承各种优秀框架 6.降低JavaEE API的使用难度 3、Spring的模块有哪些? Spring核心包: 1.Beans 2.Core 3.Context 4.SpEl 完整的模块架构图,请看下面的图 1-2. Spring的IOC的底层实现原理 Spring的IOC底层原理实现 传统方式的开发: UserService us = new UserService(); 在Web层直接创建一个业务层的对象 缺陷:没有面向接口编程 改进:通过面向接口编程 UserService us = new UserServiceImpl(); 在Web层通过业务层的接口创建了实现类 缺点:Web层与业务层产生了耦合,不符合OCP原则(修改关闭,扩展开放) 改进:使用工厂模式 由原来直接用接口创建实现类 改为 通过用工厂来创建实现类 工厂类代码: class FactoryBean{ public UserService getUs() { return new

spring的依赖注入

五迷三道 提交于 2020-01-26 23:46:14
  在使用Spring对项目进行管理时,核心功能便是IOC(控制反转)和DI(依赖注入)。使用IOC来控制JavaBean的实例化,而属性的赋值则是通过DI来实现的。在Spring中依赖注入主要有三种,分别是:构造器注入、setter注入和接口注入。除了这三种注入方式还有工厂方法注入。    一、构造器注入:JavaBean包含有参构造器      在xml文件中配置如下:          二、setter函数注入:属性必须有setter函数,getter方法不是必须属性       三、静态工厂方法注入:需要有一个工厂类,类里有一个静态方法获取JavaBean对象。      在xml中配置如下,class属性指向工厂类,factory-method指向返回JavaBean的静态方法。如果静态方法有参数,则可以通过<constructor-arg>子标签设置参数,<property>子标签设置的是静态方法返回的对象的属性。在这个示例中使用的是Food对象的属性       四、实例工厂方法注入:需要初始化工厂方法      xml文件如下:facotry-bean属性指向工厂类的实例,<property name="taste">子标签的值会覆盖出入的参数值。       来源: https://www.cnblogs.com/yaqee/p/12235052.html

简单工厂模式

余生颓废 提交于 2020-01-26 05:35:58
今天我给大家分享的是设计模式中的一种重要的模式—— 简单工厂模式 。 基本简介: 简单工厂模式是工厂模式种的一种,从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是 工厂模式 家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 实现方式: 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 工厂角色: 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。 抽象产品角色 简单工厂模式简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 优缺点 优点 工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个 软件体系结构 的优化。 缺点 由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中

设计模式整理之简单工厂

你离开我真会死。 提交于 2020-01-26 05:24:01
具体实现代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 设计模式实例 { class Program { /// <summary> /// 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮 /// (如圆形按钮、矩形按钮、菱形按钮等), 这些按钮都源自同一个基类, /// 不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观, /// 如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字, /// 只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法, /// 把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式。 /// /// </summary> /// <param name="args"></param> static void Main(string[] args) { Operation oper; Console.Write("请输入第一个数: "); string strNum1 = Console.ReadLine(); Console.Write("请输入操作符(+ - * /):

Unity C# 设计模式(二)简单工厂模式

心不动则不痛 提交于 2020-01-26 05:23:37
定义: 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。 简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 优点: 工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象。 通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。 而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件体系结构的优化。 缺点: 由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中; 它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。 当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求. 这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利; 这些缺点在 工厂方法模式 中得到了一定的克服。 使用场景: 1、工厂类负责创建的对象比较少; 2

简单工厂模式-Simple Factory Pattern

僤鯓⒐⒋嵵緔 提交于 2020-01-26 05:14:43
引入: 我们在编程的时候,每当" new "一个对象之后,这个对象就依赖于这个类了。如果在后期的维护过程中由于某些原因需要修改一下这个类,则唯一的做法就是打开源代码,进行修改,修改所有与这个对象有关的操作。这对我们是非常不利的。 问题出来了:对象不能应对“具体实例化类型”的变化 解决思路:封装变化点,哪里变化,封装哪里。在这个例子中,要实例化的类变了,就将实例化这个操作封装起来,我们可以把" new "这个操作移交一个具体的类,由它去负责根据我们的条件创建具体类的实例,也就是下面要说的“简单工厂模式”。 定义: 专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类或接口。简单工厂模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通常根据一个条件(参数)来返回不同的类的实例。 意图: 提供一个类,由它负责根据一定的条件创建某一具体类的实例 参与者: 工厂角色(IPhoneSimpleFactory) 是简单工厂模式的核心,它负责实现创建所有具体产品类的实例。工厂类可以被外界直接调用,创建所需的产品对象。 抽象产品角色(IPhone) 是所有具体产品角色的父类,它负责描述所有实例所共有的公共接口。 具体产品角色(IPhone6s、IPhone7s) 继承自抽象产品角色,一般为多个,是简单工厂模式的创建目标