首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 创建 工厂模式

    工厂方法模式 //因为工厂类只包含方法,不包含成员变量,完全可以复用, // 不需要每次都创建新的工厂类对象,所以,简单工厂模式的第二种实现思路更加合适。 而使用简单工厂模式,将所有的创建逻辑都放到一个工厂类中,会导致这个工厂类变得很复杂。 抽象工厂工厂模式的使用场景: 当每个对象的创建逻辑都比较简单的时候,我推荐使用简单工厂模式,将多个对象的创建逻辑放到一个工厂类中。 工厂模式的作用: 封装变化:创建逻辑有可能变化,封装成工厂类之后,创建逻辑的变更对调用者透明。 代码复用:创建代码抽离到独立的工厂类之后可以复用。 当每个对象的创建逻辑都比较简单的时候,将多个对象的创建逻辑放到一个工厂类中。 实现: a. if else 创建不同的对象。 b. 用单例模式 + 简单工厂模式结合来实现。

    9400编辑于 2026-02-26
  • 来自专栏Linux学习~

    设计模式-创建

    设计模式-创建 本章主要介绍有关对象创建的几种设计模式。 工厂模式 工厂模式:封装了对象的创建,使得获得对象更加符合实际逻辑 简单工厂 将所有对象的生产集中到一个工厂中 根据传参确定生产的对象类型 public abstract class Fruit { 相比直接去new一个新的对象,建造者模式的重心更加关注在如何完成每一步的配置,如果一个类的构造方法参数过多,通过建造者模式创建这个对象,会更加优雅。 Student.builder() //获取建造者 .id(1) //逐步配置各个参数 .age(18) .grade(3) 原型模式实际上与对象的拷贝息息相关,原型模式使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象 **浅拷贝:**对于类中基本数据类型,会直接复制值给拷贝对象;对于引用类型,只会复制对象的地址

    44530编辑于 2023-11-12
  • 来自专栏Jasper小笔记

    3分钟学设计模式创建3、抽象工厂模式

    包含抽象工厂模式的概念以及差异 定义 抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类 —— 《Head First 设计模式》 按照这个定义的描述,好像是和工厂方法模式没有啥不同的 ——关于工厂方法模式看这篇 《3分钟学设计模式创建):2、工厂方法模式》 这里画一个抽象工厂大概的UML图: 就图的区别而言,工厂方法模式只提供一个创建实例的方法。 工厂方法模式只提供一个抽象的工厂方法,如果要和抽象工厂创建对象的范围一样的话,那么这个唯一的工厂方法的返回类型就要相对来说大一层。 工厂方法 同样在Spring当中也有工厂方法模式的体现AbstractFactoryBean 对象的其他操作都由其他方法完成,而具体的创建由其各个子类实现createInstance抽象方法。 总结 回顾整个工厂模式是用来封装对对象的创建,从而减少程序与具体类的耦合。它符合我们的依赖倒置原则——避免依赖具体类型,尽量依赖抽象。

    39010发布于 2021-10-08
  • 来自专栏每日一Java,进步一点点

    设计模式——创建设计模式

    创建设计模式 争对对象/类创建时的优化 工厂方法模式(了解) 通过定义顶层抽象工厂类,通过继承的方式,针对于每一个产品都提供一个工厂类用于创建。 情况:只适用于简单对象,当我们需要生产许多个产品族的时候,这种模式就有点乏力了 创建对象不再使用传统的new,而是创建一个工厂类,作为all实体类创建对象的一个封装类。 System.out.println(fruit); } } 工厂方法模式:通过范灵活实现 如果新增了水果类型,直接创建一个新的工厂类就行,不需要修改之前已经编写好的内容。 多例模式:在计算机进程中,对一个实体类创建一次对象就是对当个对象操作,若是创建多个对象则是分别对对应的对象操作。 单例模式的三种写法: 原型模式 定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

    1K10编辑于 2022-08-18
  • 来自专栏迈向架构师

    设计模式 | 创建 | 工厂模式

    今天学习分享的是工厂模式: 工厂模式 Factory 将创建对象移交给工厂来处理。 : javax.crypto.Cipher#getInstance(String transformation); ---- 工厂方法 Factory Method 介绍 工厂方法是一种创建设计模式 如果你希望复用现有对象来节省系统资源,而不是每次都重新创建对象,可使用工厂方法。 实现方式 工厂方法模式建议使用特殊的工厂方法代替对于对象构造函数的直接调用。 } throw new IllegalStateException("Unreachable code"); } ---- 抽象工厂 Abstract Factory 介绍 抽象工厂是一种创建设计模式 一个工厂类只负责某个类对象或者某一组相关类对象的创建,而 DI 容器负责的是整个应用中所有类对象的创建。 DI 容器底层最基本的设计思路就是基于工厂模式的。

    69310编辑于 2023-02-25
  • 来自专栏FoamValue

    创建构建模式

    单例模式、原型模式、工程模式、建造者模式,它们是以创建对象为目的的设计模式,它们也被称为创建构建模式。 其中工厂模式、建造者模式之前已经介绍过,可以查看往期内容: 工厂模式 Factory Pattern 、 建造者模式 Builder Pattern ---- 单例模式 Singleton Pattern Singleton Pattern 是 Java 中最简单的设计模式,它提供了自己创建自己唯一实例的能力。 虽然运行结果都是同一对象实例,但是演示案例并不是一个优秀的单例模式。JDK 1.5 版本以后,单例模式的使用首推枚举类,枚举类简单易用,还满足多线程安全。 ---- 总结 将对象的创建与使用分离,使用者不需要了解对象创建的内部逻辑。通过这样的设计模式,来实现系统内部的解耦。

    49510发布于 2020-11-06
  • 创建 建造者模式

    建造者模式的使用场景: 当被创建的对象内部成员之间相互依赖时,不能单纯的直接new出来; 当初始化参数比较多时,直接new出来,构造方法内的参数过多,代码不够简洁,容易出错; 直接new出来对象,再采用 如果需要一次性创建相互有依赖关系的多个对象时,就应该使用建造者模式。工厂模式跟建造者模式的区别:工厂方法是创建同一种类针对的很多,而 Builder 模式创建的是一个对象,只针对一个。 工厂模式是用来创建不同但是相关类型的对象(继承同一父类或者接口的一组子类),由给定的参数来决定创建哪种类型的对象。 建造者模式是用来创建一种类型的复杂对象,通过设置不同的可选参数,“定制化”地创建不同的对象。网上有一个经典的例子很好地解释了两者的区别。 顾客走进一家餐馆点餐,我们利用工厂模式,根据用户不同的选择,来制作不同的食物,比如披萨、汉堡、沙拉。

    9110编辑于 2026-02-26
  • 创建 原型模式

    原型模式的两种实现方式:深拷贝和浅拷贝原型模式的原理与应用如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型)进行复制(或者叫拷贝 )的方式来创建新对象,以达到节省创建时间的目的。 这种基于原型来创建对象的方式就叫作原型设计模式(Prototype Design Pattern),简称原型模式。原型模式的两种实现方法原型模式有两种实现方法,深拷贝和浅拷贝。 浅拷贝:浅拷贝的实质定义:只拷贝基本数据类型和引用类型的地址,不拷贝引用对象本身,不会在堆内存中重新创建对象。Object 类的 clone() 方法执行的是浅拷贝。 浅拷贝和深拷贝:关键看引用的物理地址有没有发生变化,如果没有变化则是浅拷贝,发生变化就是深拷贝,也就是看这个拷贝有没有在堆中创建出来对象,没有创建新的对象,只是创建了一个对象引用则是浅拷贝,如果在堆中创建出了新的对象

    16810编辑于 2026-02-26
  • 来自专栏大数据-BigData

    创建设计模式简介

    在本文中,我们将探讨创建设计模式及其类型。 我们还将查看一些代码示例并讨论这些模式适合我们设计的情况。 创建设计模式 创建设计模式关注对象的创建方式。 创建设计模式通过将客户端与实际初始化过程完全分离来解决这个问题。 在本文中,我们将讨论四种创建设计模式: 单例 – 确保在整个应用程序中最多只存在一个对象实例 工厂方法——创建几个相关类的对象,而不指定要创建的确切对象 抽象工厂——创建相关依赖对象的族 换句话说,这个模型允许我们创建遵循一般模式的对象。 Builder设计模式 Builder 设计模式是另一种创建模式,旨在处理相对复杂的对象的构造。

    68020编辑于 2022-01-19
  • 来自专栏大数据-BigData

    创建设计模式简介

    在本文中,我们将探讨创建设计模式及其类型。 我们还将查看一些代码示例并讨论这些模式适合我们设计的情况。 创建设计模式 创建设计模式关注对象的创建方式。 创建设计模式通过将客户端与实际初始化过程完全分离来解决这个问题。 在本文中,我们将讨论四种创建设计模式: 单例 - 确保在整个应用程序中最多只存在一个对象实例 工厂方法——创建几个相关类的对象,而不指定要创建的确切对象 抽象工厂——创建相关依赖对象的族 Builder 换句话说,这个模型允许我们创建遵循一般模式的对象。 Builder设计模式 Builder 设计模式是另一种创建模式,旨在处理相对复杂的对象的构造。

    63110编辑于 2022-01-17
  • 来自专栏陶士涵的菜地

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

    简单的创建对象工厂模式,目的是当有很多的初始化动作的时候,可以直接在工厂里搞,不用每次new都写一遍 工厂生成自行车 class SimpleFactory { public function

    26710发布于 2020-10-27
  • 来自专栏陶士涵的菜地

    静态工厂模式-创建设计模式

    和抽象工厂类似,静态工厂模式用来创建一系列互相关联或依赖的对象 和抽象工厂模式不同的是静态工厂模式只用一个静态方法就解决了所有类型的对象创建 工厂里提供一个静态方法来创建不同的对象实例 final class

    37710发布于 2020-10-27
  • 来自专栏陶士涵的菜地

    原型模式-创建设计模式

    通过创建一个原型对象,然后复制原型对象来避免通过标准的方式创建大量的对象产生的开销(new Foo())。 大量的数据对象(比如通过ORM获取1,000,000行数据库记录然后创建每一条记录对应的对象实体) 带构造方法、属性的类,clone的性能要比new带上构造参数的性能高不少 这个就是原型,子类继承这个原型来搞 ,就是原型模式 abstract class BookPrototype { protected string $title; protected string $category; BookPrototype { protected string $category = 'Bar'; public function __clone() { } } 比如有循环创建对象的情况

    38720发布于 2020-10-27
  • 来自专栏陶士涵的菜地

    对象池模式-创建设计模式

    当使用对象后,不是立即销毁对象,而是放回池子闲的数组里面,下次使用直接拿,拿到后放到忙的数组里.当拿不到的时候就再创建新 class WorkerPool { /** * @var 忙的数组

    60610发布于 2020-10-27
  • 来自专栏迈向架构师

    设计模式 | 创建 | 原型模式

    原型模式(Prototype) 原型模式(Prototype) 介绍 原型模式是一种创建设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类。 如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同), 在这种情况下,我们可以利用对已有对象(原型)进行复制(或者叫拷贝)的方式来创建新对象,以达到节省创建时间的目的。 子类直接的区别仅在于其初始化的方式时,可以用该模式减少子类的数量(别人创建这些子类的目的可能是为了创建特定类型的对象)。 ... 实现方式 原型类必须添加一个以该类对象为参数的构造函数。 与其他模式的关系 在许多设计工作的初期都会使用工厂方法模式(较为简单,而且可以更方便地通过子类进行定制),随后演化为使用抽象工厂模式、原型模式或生成器模式(更灵活但更加复杂)。 也减少了创建对象时的成本。

    39020编辑于 2023-02-25
  • 来自专栏陶士涵的菜地

    单例模式-创建设计模式

    使应用中只存在一个对象的实例,并且使这个单实例负责所有对该对象的调用 final class Singleton{ private static ?Singleton $instance =

    61520发布于 2020-10-27
  • 来自专栏迈向架构师

    设计模式 | 创建 | 建造者模式

    建造者模式(Builder) 建造者模式(Builder) 介绍 建造者模式(又叫生成器/构建者模式) 建造者模式是一种创建设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。 即创建方法) 优缺点 优点: 可以分步创建 或延缓创建 或递归创建 生成不同形式的产品时可以复用代码 单一职责 缺点: 需要新增类,复杂度增加 与其他模式的关系 工厂模式是用来创建不同但是相关的对象, 建造者模式是用来创建一种类型的复杂对象 示例 public class ConstructorArg { /** * 当 isRef 为 true 的时候,arg 表示 String 省略3个get方法 注意:这里没有set方法,只有一个参数为builder的构造函数 /** * 唯一的构造函数(创建方法) * * @param builder

    40810编辑于 2023-02-25
  • 来自专栏迈向架构师

    设计模式 | 创建 | 单例模式

    设计模式 创建的设计模式主要有: 设计模式 - 创建 其中的原型模式比较少用到。 今天分享的是单例模式。 介绍 单例模式(Singleton Design Pattern): 一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。 该函数调用私有构造函数来创建对象, 并将其保存在一个静态成员变量中。此后所有对于该函数的调用都将返回这一缓存对象。 MultipleSingleton { private long id; private String msg; private static final int COUNT = 3; , new MultipleSingleton(3L, "多例-3")); } public static MultipleSingleton getInstance(long id)

    62220编辑于 2023-02-25
  • 来自专栏Jasper小笔记

    3分钟学设计模式创建):1、单例模式

    对之前来讲可能是对其中部分设计模式还是相对来说熟悉的但仔细琢磨还是会有些疑问,正好在目前相对来说有更多的业余时间,可以来一次重新学习设计模式! 设计模式的一篇单例模式,内容包含2点一是模式的定义与目的,二是Java具体实现与疑问 定义 对于单例模式大家应该还算比较熟悉,可能有的场景还手写过各种实现啊啥的 。 先还是体会下最初的定义 单例模式最初的定义出现于《设计模式》(艾迪生维斯理, 1994):“保证一个类仅有一个实例,并提供一个访问它的全局访问点。” (); // 2.关闭私有访问 constructor.setAccessible(true); // 3.调用两次构造器获取对象 Single single1 = constructor.newInstance 3.是否有必要防反射序列化等等。对于优缺点而言就是有得必有舍得问题,比如它不能被继承不好扩展等。这些缺点就是为了实现单例得思想带来的因此必须是不能的。

    45120发布于 2021-10-08
  • 来自专栏Jasper小笔记

    3分钟学设计模式创建):4、建造者模式

    包含建造者模式的设计、实现以及疑问点。 定义 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 在代码使用这个产品对象进行直接创建就需要了解这个类所有的属性及它的运作流程,才能正常创建出自己想要的。 对于建造者模式就是把产品对象的创建委托给一个叫做建造者的家伙,客户代码就通过建造者获取,也就是定义里的构建与表示分离。 在我看来最大的区别在于,一个是通过描述创建一个抽象类下的哪个具体类?另一个也是传些内容创建一个具体类的怎样的对象? 对于工厂模式客户代码需要了解产品的知识是要少于建造者模式的。 总结 建造者模式是提供给客户代码获取复杂类型对象的一种新方式,比起原生的创建进行了封装,但也提供各个步骤有客户代码进行选择。

    58770发布于 2021-10-20
领券