首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏关于Java学习@宁在春

    Java设计模式-工厂模式(2工厂方法模式

    在Java设计模式-工厂模式(1)简单工厂模式 中我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品 地点: 湖南永州市蓝山县舜河村 作者:用心笑* Java设计模式-工厂模式(2工厂方法模式 一、前言 1)概述: 2)角色结构: 3)类图关系: 二、代码实现 1)Coffce咖啡抽象类(产品抽象类 ) 2)AmericanCoffee 、LatteCoffee类(具体产品类) 3)CoffeeFactory(抽象工厂类) 4)AmericanCoffeeFactory、LatteCoffeeFactory 2)角色结构: 抽象工厂(Creator):是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。 abstract void addMilk(); public abstract void addSugar(); public abstract String getName(); } 2

    57520编辑于 2022-10-31
  • 来自专栏技术客栈

    Java设计模式(2工厂模式

    本文是这个系列的第二篇章,我们将讲解一下工厂模式的实现方式、应用场景以及它的用途。 工厂模式 工厂模式是一种创建型设计模式,其主要目标是封装对象的创建过程,使客户端代码与具体类的实例化解耦。 通过使用工厂模式,客户端无需直接调用具体类的构造函数,而是通过调用工厂方法或工厂接口来获取所需的对象。这提高了系统的灵活性,使得更容易更换或扩展产品对象。 具体工厂(Concrete Factory):实现了抽象工厂接口,负责实际创建具体产品的对象。 工厂模式的优点包括: 封装了对象的创建过程,降低了客户端与具体类的耦合度。 简单工厂模式 在简单工厂模式中,有一个单一的工厂类,该工厂类负责根据客户端的需求创建不同的产品对象。客户端通过向工厂类传递参数来获取所需的产品实例。 每个生成的工厂都能按照工厂模式提供对象。抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口,而无需指定具体实现类。

    27410编辑于 2024-04-18
  • 来自专栏藏经阁

    【GoF 23】篇2工厂模式

    什么是工厂模式? 理解工厂2工厂就是生产东西给我们使用的,在Java的角度来讲就是在工厂里创建好了对象(return new Xxx()),我们只需要传参告诉工厂我们需要使用哪个对象,工厂即可帮我们完成创建并返回。 工厂模式满足OOP原则的: 开闭原则:对扩展开放,对修改关闭。 依赖倒置原则:面向接口编程,不要面向细节编程。 迪米特法则:间接通过朋友与朋友的朋友通信,不要直接与朋友的朋友通信。 2. (int condition){ if(condition == 1){ return new ImplA();//创建实现类A的实例 }else if(condition == 2) (int condition){ if(condition == 1){ return new ImplA();//创建实现类A的实例 }else if(condition == 2)

    43410编辑于 2023-03-10
  • 来自专栏wfaceboss

    2.简单工厂方法模式

    { Console.WriteLine("I am a man"); Console.ReadKey(); } } (2) { Console.WriteLine("I am a Man"); Console.ReadKey(); } } (2) 故此使用工厂方法模式l:通过一个工厂,创建所需的对象 实现方式为: 首先,准备一个工厂类 该工厂类为: public class SimpleFactory { //通过方法创建对象 :高耦合 矛盾转移到工厂当中 简单工厂的弊端:修改普通类则工厂也需要修改  严重违背面向对象的单一原则(一个类只做一件事) 以上所需要的类型是在工厂中方法调用时指定的 第二部分:工厂方法进阶 第一种方式 woman = SimpleFactory.CreateInstanceConfig();//方法无参数 woman.ShowS(); } 第二种方式:简单工厂

    48420发布于 2019-04-08
  • 来自专栏藏经阁

    【GoF 23】篇2工厂方法

    什么是工厂方法? 工厂方法类似简单工厂,只不过将对象实例化延迟到了子类来实现。 工厂方法定义: 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使得一个类的实例化延迟到其子类。 2. 代码示例 定义一个创建对象的接口: // 创建对象的接口 public interface Product {...} 定义创建对象类,一般为抽象类,该类就是工厂方法 //工厂方法,用于创建对象,但是不直接在这里创建,而是延迟到子类创建 public abstract calss ProductCreator { // 工厂类只是定义了一些功能,并没有提供具体的实现,正好满足抽象类的条件,因而常常定义为一个抽象类。 3. 适用场景 工厂方法是站在设计原则的角度来设计的。 (适用于架构师) 简单工厂是站在具体业务场景中设计的。(适用于编码者)

    21820编辑于 2023-03-11
  • 来自专栏Python机器学习算法说书人

    Python设计模式(2):工厂方法模式

    导言 为了克服简单工厂方法模式的缺点,人们试图改善工厂类的结构。 简单工厂方法模式与工厂方法模式的区别如下: 两个模式的中心不同。工厂方法模式的中心是抽象工厂类或者接口,而简单工厂方法模式的中心是一个实的工厂类(Concrete Factory Class)。 在简单工厂模式类中,工厂方法是静态(Static)的,而在工厂模式中工厂方法是动态的(Dynamic)。 简单工厂模式不支持开闭原则,工厂方法模式支持开闭原则。 因此工厂方法模式支持开闭原则。 在简单工厂模式中,必要的创建对象的逻辑判断包含在工厂类中;在工厂方法模式中,工厂类不必包含创建对象的逻辑判断。 在以下任何一种情况下,可以使用工厂方法模式。 工厂方法模式的优点如下: 工厂方法模式将创建对象的逻辑与任务交给了工厂类。 工厂方法模式支持开闭原则。

    79420发布于 2019-07-26
  • 来自专栏学习笔记ol

    小谈设计模式(2)—简单工厂模式

    小谈设计模式(2)—简单工厂模式 专栏介绍 主要对目前市面上常见的23种设计模式进行逐一分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。 简单工厂模式 简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式,通过将对象的创建逻辑封装在一个工厂类中,客户端不需要知道具体的创建细节,只需要向工厂类请求所需对象即可 在简单工厂模式中,每个具体产品都对应一个具体的产品类。 简单工厂(Simple Factory) 简单工厂是一个包含创建产品对象的静态方法的类。 2、具体产品是抽象产品的实现类,负责实现抽象产品中定义的方法。 3、简单工厂作为一个工厂类,封装了对象的创建过程。它根据客户端的请求创建相应的具体产品对象,并返回给客户端使用。 工厂类职责过重 在简单工厂模式中,工厂类负责创建所有的产品对象。随着产品类型的增多,工厂类的代码会变得越来越复杂,职责过重。这违反了单一职责原则,不利于代码的维护和扩展。

    32720编辑于 2023-10-11
  • 来自专栏前端进阶之路

    JavaScript设计模式第2篇:工厂模式

    分类 这里工厂模式分为2类:简单工厂工厂方法,下一节会介绍第3类工厂模式:抽象工厂。 所以,使用简单工厂,是将类的实例化交给工厂函数去做,对外提供统一的方法。 工厂方法 工厂方法模式是简单工厂的进一步优化,我们不再提供一个统一的工厂类来创建所有的对象,而是针对不同的对象提供不同的工厂,也就是说每个对象都有一个与之对应的工厂工厂类,调用方法进行实例化 那么工厂方法增加了如此多的流程,提高了复杂度,究竟解决了简单工厂的什么问题呢? ,增加新的子类时,需要修改工厂类,违背了“开闭原则”,并且工厂类会变得越来越臃肿; 简单工厂模式适用于固定的,不会频繁新增子类的使用场景 工厂方法模式 通过在上层再增加一层抽象,提供了接口,每个子类都有自己的工厂

    59010发布于 2019-12-16
  • 来自专栏Lvshen的技术小屋

    设计模式2工厂方法模式

    什么是工厂方法模式 我们有一个产品类,还有一个工厂接口,一个实现工厂接口的工厂类。产品对象的创建是依靠工厂类来创建。核心就是创建与使用分离。 : 通过工厂可获取产品,不用知道产品的具体创建过程 如果新增产品,不需要修改工厂,只需要添加新的工厂即可 然而这也成了工厂模式的缺点,无疑增加了系统的复杂度。 如果要实现抽象工厂,需要这么几个要素: 抽象工厂 具体工厂 抽象产品 具体产品 结构图如下: AbstractFactory就是抽象工厂,实际就是一个接口,里面有一个待实现的newProduct()方法 关于工厂方法模式的一点思考 产品本身不实例化,而是交给工厂去做。工厂方法是一个类的实例化延迟到了工厂类。 我觉得使用工厂方法的一个重要好处就是屏蔽了产品类。 在复杂的应用中一般采用多工厂的方法,然后再增加一个协调类,避免调用者与各个子工厂交流,协调类的作用是封装子工厂类,对高层模块提供统一的访问接口。

    31710编辑于 2022-05-05
  • 来自专栏流媒体

    工厂模式工厂方法简单工厂抽象工厂

    工厂模式分三类: 简单工厂 工厂方法 抽象工厂 简单工厂不属于设计模式,因为其违背了设计模式的开闭原则,后面会有介绍。 工厂方法 ? 车可以生产车,那具体的奥迪车工厂可以生产奥迪车,奔驰车工厂可以生产奔驰的车。当需要生产法拉利的车时,我们只需要实现一个法拉利的产品,然后实现一个法拉利的工厂即可,而不需要修改之前的代码。 简单工厂 ? factory_simple.png 这是工厂模式的简单实现方式,包含元素 工厂类 抽象产品 抽象方法 示例 这里抽象产品和抽象方法和前面一样。 比如:当需要生产法拉利时,我们需要修改工厂类的方法。这不符合开闭原则,所以它不属于设计模式。只是工厂模式的一个变相简单的实现。 抽象工厂 前面说到工厂方法只能生产一个类型的产品。 当我们需要生产一系列的产品,比如:我们需要奥迪的发动机,那么肯定也是在奥迪的工厂生产,那么这里就可以使用抽象工厂设计模式 元素 抽象工厂 具体工厂 抽象产品(多个) 具体产品 示例 这里我们再Car的基础上在增加一个产品

    67510发布于 2018-08-23
  • 来自专栏X#(XSharp)

    设计模式:工厂方法模式(Factory Method)(2)

    * 这里是非标准逻辑下的数据处理 Endproc Enddefine 如果当时知道工厂方法模式,也许有更完美的设计: Public loForm As UI m.loForm = CreateObject EndDefine ***

    *** 具体的 UI *** Define Class UI As AbstractionUI *** *** 工厂方法的实现 This.CreateDE("A") Else This.oDE = This.CreateDE("B") EndIf EndProc *** *** 工厂方法的封装 PS. myDE 类可以认为是一个接口(类模板) 这个代码融合了工厂方法模式和桥接模式的本质,应该是最佳方案。 未完待续......

    18010编辑于 2025-04-23
  • 来自专栏nginx

    【Java设计模式 - 创建型模式2工厂模式

    简介 工厂模式是在工作中第一次正式使用的(当然准确说是抽象工厂),所以作为第二篇的设计模式分享。 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。 应用实例: 1、您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。 2、Hibernate 换数据库只需换方言和驱动就可以。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。 2、数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。 步骤 1 创建一个接口: Shape.java public interface Shape { void draw(); } 步骤 2 创建实现接口的实体类。

    17410编辑于 2025-11-13
  • 来自专栏java相关

    设计模式之—2.工厂方法模式

    1.工厂方法模式定义 定义一个用于创建对象的接口,让子类决定具体实例话哪一个类。 2.通用实现方式 工厂方式通用实现方式类图如下: ? 其中Product定义了产品的共性,是对事物的抽象,Creator为抽象创建类,即抽象工厂,具体如何创建实例由实现类决定。 ()).newInstance(); } catch (Exception e) { } return (T)product; } } 对于工厂方法模式有许多扩展 ,其中之一就是当一个模块中只需要一个工厂的时候,其实可以对上面进行简化,直接将create方法定义为静态方法,相当于一个util类,代码如下: public class ConcreteCreator newInstance(); } catch (Exception e) { } return (T)product; } } 这种被称为简单工厂模式

    50610发布于 2018-09-27
  • 来自专栏全栈程序员必看

    23种设计模式(2):工厂方法模式

    工厂模式依据抽象程度的不同分为三种:简单工厂模式(也叫静态工厂模式)、本文所讲述的工厂方法模式、以及抽象工厂模式。工厂模式是编程中经经常使用到的一种模式。 工厂方法模式: 通过工厂方法模式的类图能够看到,工厂方法模式有四个要素: 工厂接口。工厂接口是工厂方法模式的核心,与调用者直接交互用来提供产品。 前文提到的简单工厂模式跟工厂方法模式极为相似,差别是:简单工厂仅仅有三个要素,他没有工厂接口,而且得到产品的方法通常是静态的。 由于没有工厂接口,所以在工厂实现的扩展性方面稍弱,能够算所工厂方法模式的简化版,关于简单工厂模式,在此一笔带过。 假设使用工厂模式,就须要引入一个工厂类,会添加系统的复杂度。 其次,工厂模式是一种典型的解耦模式,迪米特法则在工厂模式中表现的尤为明显。

    31930编辑于 2022-07-09
  • 来自专栏blog(为什么会重名,真的醉了)

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

    文章目录 简单工厂 工厂方法 抽象工厂 简单工厂 ---- 简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由一 个工厂对象决定创建出哪一种产品类的实例。 Factory表示工厂工厂根据需要来创建相应的产品。 这样一来,当添加新的产品C时,只需要修改工厂部分代码即可,而传统方法需要在每一个创建产品的地方都进行修改。 String []types=new String[3]; types[0]="Empty"; types[1]="park"; types[2] 可以根据创建对象类型使用对应的工厂子类。这样将单个的简单工厂类变成了工厂簇,更利于代码的维护和扩展。 把工厂类抽象后,对应不同子类工厂(普通/魔法),生产对应的一组产品。 new Map(); Scanner scan = new Scanner(System.in); System.out.println("请输入指令(1输出普通地图,2输出魔法地图

    2.4K42发布于 2021-09-14
  • 来自专栏跟着飞哥学编程(全栈联盟社区)

    【设计模式】-创建型模式-第2章第2讲-【工厂模式】

    目录 场景描叙: 1、简单工厂模式 1.1、静态工厂模式 1.2、 使用反射机制进行类注册的简单工厂模式 1.3、使用 newInstance 方法进行类注册的简单工厂模式 2工厂方法模式 2.1、 2)每个类应该只有一个发生变化的原因(单一职责原则); 而主类除了自身固有功能还要负责实例化 vehicle 对象,这种行为打破了单一职责原则。 所以这种情况下就需要一种更好的设计方案。 2)注册产品对象并向每个产品添加 newInstanse 方法,该方法返回与自身类型相同的新实例。 这样就不需要修改就可以扩展工厂类。实现如 图2-1: 图2-1  2.1、案例场景:假设有一个汽车工厂,目前只生产两种车型,小型跑车和大型家用车。顾客决定买小还是大型。 ProductA2 和 ProductB2 来自第二个类簇,由 ConcreteFactory2 实例化。 结尾: 工厂的模式的核心就是右工厂类来负责合适对象的创建。

    39540编辑于 2022-12-02
  • 来自专栏技术杂货店

    设计模式【2】-- 简单工厂模式了解一下?

    1.简单工厂模式介绍 2.简单工厂模式举例 3.简单工厂模式的优劣 1.简单工厂模式介绍 工厂模式,比较常用,属于创建型模式,也就是主要是用来创建对象的。 工厂模式,有三种,主要分为: 简单工厂模式 工厂方法模式 抽象工厂模式 其中,本文要讲的就是,简单工厂模式,但是简单工厂模式,并不是属于GoF讲的23种设计模式中。简单工厂模式,也叫静态工厂方法模式。 简单而言,就是有一个具体的工厂类,用来生产不同类型的对象,而这些对象,都有相似的特点,它们都实现同一个接口。 什么时候应该使用工厂模式?为什么需要工厂模式呢? 2.简单工厂模式举例 假设现在有一个果园,用来种植各种水果,但是每一种水果种植的方式又不一样。 凡事都有优劣,简单工厂方法的缺点在于: 工厂类的重要性很高,一旦出现问题,影响所有的产品。 产品数量一旦特别多的时候,工厂内部逻辑会比较复杂,不利于理解和维护。 静态方法不利于继承和实现。

    29020编辑于 2022-02-15
  • 来自专栏技术赋能学术

    Head First设计模式——简单工厂工厂、抽象工厂

    前言:按照惯例我以Head First设计模式的工厂模式例子开始编码学习。并由简单工厂工厂模式,抽象工厂模式依次演变,归纳他们的相同与不同。 2、更多的披萨店 现在我们要开更多的披萨店,例如美国风格披萨店(USSytlePizzaStore)、中国风格披萨店(CHNSytlePizzaStore)。 工厂方法模式:定义了一个创建对象的接口,由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到子类。 工厂方法与简单工厂的区别:工厂方法的子类看起来很像简单工厂。 利用抽象工厂我们代码将从实际工厂解耦,这样如果我们的工厂需要扩展那么我们则可在子类中进行修改扩展。 工厂方法与抽象工厂的异同优缺点 相同:都是用来创建对象。 不同:工厂方法使用的是继承,抽象工厂使用的是组合。 优点:工厂方法只负责从具体类型中解耦,抽象工厂适合将一群相关的产品集合起来。 缺点:抽象工厂扩展接口需要修改每个子类。

    55020发布于 2020-08-11
  • 来自专栏技术杂货店

    设计模式【2】-- 简单工厂模式了解一下?

    TOC 1.简单工厂模式介绍 工厂模式,比较常用,属于创建型模式,也就是主要是用来创建对象的。 工厂模式,有三种,主要分为: 简单工厂模式 工厂方法模式 抽象工厂模式 其中,本文要讲的就是,简单工厂模式,但是简单工厂模式,并不是属于GoF讲的23种设计模式中。简单工厂模式,也叫静态工厂方法模式。 简单而言,就是有一个具体的工厂类,用来生产不同类型的对象,而这些对象,都有相似的特点,它们都实现同一个接口。 什么时候应该使用工厂模式?为什么需要工厂模式呢? 2.简单工厂模式举例 假设现在有一个果园,用来种植各种水果,但是每一种水果种植的方式又不一样。 凡事都有优劣,简单工厂方法的缺点在于: 工厂类的重要性很高,一旦出现问题,影响所有的产品。 产品数量一旦特别多的时候,工厂内部逻辑会比较复杂,不利于理解和维护。 静态方法不利于继承和实现。

    41100发布于 2020-12-26
  • 来自专栏余林丰

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

    工厂模式分三类:简单工厂模式、工厂方法模式、抽象工厂模式。 首先介绍比较简单一种工厂模式——简单工厂模式。 我们以计算器作为一个例子来说明工厂模式到底是什么。 既然是工厂模式,那就有一个工厂类。这个工厂类是用来干嘛的呢?工厂是用来做什么呢?生产东西用的,工厂模式的工厂类就使用类生产不同类不同对象的。 oper = OperationFactory.createOperation("+"); oper.setNumberA(1); oper.setNumberB(2) ; System.out.println(oper.getResult()); } } 利用简单工厂模式,只需要输入运算符号,工厂类就能实例化出合适的对象,通过多态返回父类的方式的实现了计算器的结果 #到现在,就是简单工厂模式的思想,为什么不能几个if分支判断来实现计算器呢?那样岂不是代码量更少,好像更容易阅读么?

    1.3K60发布于 2018-01-09
领券