静态工厂和构造器区别

news/2024/11/8 9:11:57/文章来源:https://www.cnblogs.com/Gaze/p/18534406
public class Product {private int id;private String name;// 构造器public Product(int id, String name) {this.id = id;this.name = name;}// 静态工厂方法public static Product createProduct(int id, String name) {// 这里可以添加一些额外的逻辑,例如缓存return new Product(id, name);}// Getter 和 Setter 方法public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Product{" +"id=" + id +", name='" + name + '\'' +'}';}
}

  

名称

  • 构造器:构造器通常与类名相同,并且每当创建类的新对象时都会被调用。
  • 静态工厂方法:静态工厂方法通常是类中的一个静态方法,可以任意命名。

可见性

  • 构造器:构造器可以是public或private,但通常是public。
  • 静态工厂方法:静态工厂方法可以是public、protected、private或默认的,提供了更多的灵活性。

返回类型

  • 构造器:构造器总是返回类的实例。
  • 静态工厂方法:静态工厂方法可以返回任何子类型的实例,这意味着可以返回类的不同实现,甚至可以返回非公开的类实例。

实例化过程

  • 构造器:每次调用构造器时都会创建一个新的对象。
  • 静态工厂方法:静态工厂方法可以缓存对象并返回已创建的对象,从而实现单例模式或享元模式。

参数

  • 构造器:构造器在创建对象时必须提供所有必需的参数。
  • 静态工厂方法:可以提供多个重载的静态工厂方法,每个方法都可以有不同的参数列表,从而可以返回不同配置的对象。

可读性

  • 构造器:构造器的参数列表必须完整地定义在调用时。
  • 静态工厂方法:静态工厂方法可以有更具描述性的名称,使得代码更加易于阅读和理解。

性能

  • 构造器:每次调用都会创建新对象。
  • 静态工厂方法:可以预先创建对象并在需要时返回,减少了对象创建的开销。

灵活性

  • 构造器:在类定义时就必须确定构造器的参数和逻辑。
  • 静态工厂方法:可以在不修改方法签名的情况下,改变返回对象的逻辑。

缺点

  • 构造器:通常需要更多的代码来处理不同的情况。
  • 静态工厂方法:类如果不包含任何public或protected的构造器,就不能被子类化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/828683.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Kali进行Dos攻击实验

前言 1. 拒绝服务(DoS, Denial of Service)攻击是一种网络攻击手段,其目的是通过各种方式使目标系统或网络资源无法为合法用户提供正常服务。攻击者可能会利用网络协议的缺陷、发送大量无效请求或使用僵尸网络来耗尽目标系统的资源,如CPU、内存、带宽或网络连接,导致系统无…

PbootCMS提示会话目录写入权限不足

问题背景在使用 PbootCMS 时,可能会遇到“会话目录写入权限不足”的提示。这通常是由于某些目录的权限设置不正确导致的。解决方法通过设置 config、data、runtime 和 upload 等文件夹的可读写权限,可以解决这个问题。最简单的方法是将整个网站根目录设置为 777 权限。扫码添…

调度算法(一)

调度算法(一) (1)前言 此处列举的三种算法主要关心对用户的公平性、平均周转时间、平均等待时间等评价系统整体性能的指标,但是不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。 因此这三种算法一般适合用于早期的批处理系统,当然, FCF…

PbootCMS 模板报错提示 PHP Warning: Unknown: open_basedir restriction ineffect. File

当你在使用 PbootCMS 时,如果遇到 PHP Warning: Unknown: open_basedir restriction ineffect. File 的错误提示,这通常是因为 PHP 的 open_basedir 配置限制了某些文件的访问权限。以下是解决该问题的方法: 1. 检查 PHP 版本 首先,确认你使用的 PHP 版本是否与 PbootCMS 兼…

DW修改网站教程,Dreamweaver网站修改教程

使用Dreamweaver修改网站可以通过以下步骤完成:打开项目:启动Dreamweaver,打开需要修改的网站项目。编辑HTML文件:在文件列表中,双击需要编辑的HTML文件。 修改页面的内容,包括标题、段落、链接等。编辑CSS文件:在文件列表中,双击需要编辑的CSS文件。 修改样式表中的样…

网站如何修改网站网页,网站网页修改方法

登录后台:打开网站的后台管理页面,输入用户名和密码登录。编辑内容:在后台的“内容管理”模块中,找到需要编辑的页面或文章。 点击“编辑”按钮,进入编辑页面。 修改页面的标题、正文、关键词等信息,保存修改。编辑模板:在后台的“模板管理”模块中,找到需要编辑的模板…

网站 ico图标 修改,网站ICO图标更换方法

更换网站的ICO图标通常涉及以下几个步骤:准备图标文件:准备一个新的ICO文件,确保文件格式为.ico,尺寸通常为16x16或32x32像素。 上传文件:将新的ICO文件上传到网站的根目录,通常命名为favicon.ico。 修改HTML:在网站的HTML文件中添加或修改ICO图标的链接。例如:<lin…

解决Nginx转发图片不能显示【转】

背景:最近很多小伙伴使用Nginx代理iServer,将HTTP协议成HTTPS协议,但是可能会出现以下几种情况:(1) 图片、js、css等静态资源无法加载 (2)代理后页面跳转回HTTP协议 (3)代理后访问服务管理界面提示“该用户无查询服务访问统计信息权限” 针对上述情况应该如何解决…

网络正常,所有浏览器网页却打不开?

网上一堆教程不靠谱,我请教的供应商技术支持,很简单。 设置———>网络————>代理————>关闭“使用代理服务器”本文来自博客园,作者:生物信息与育种,转载请注明原文链接:https://www.cnblogs.com/miyuanbiotech/p/18534380。若要及时了解动态信息,请关注…

国产化浪潮下,高科技企业如何选择合适的国产ftp软件方案?

高科技企业在数字化转型和创新发展中,数据资产扮演着越来越重要的角色。在研发过程中产生的实验数据、设计文档、测试结果等,专利、商标、版权之类的创新成果等,随着信息量急剧增加和安全威胁的复杂化,传统的FTP软件已经不能满足这个高端领域的需要了,需要重新寻找国产ftp…

Ftrans数据跨境传输方案:保护隐私与促进合作!

数据跨境传输是指在不同国家、地区和法律框架下进行的数据交换和传输,数据跨境传输流程周期是数据产生--数据传输--数据接收,而困境来源也来自这3个环节: 1.本地合规限制 数据出口国(数据输出国)的法律对于数据收集的要求,针对的是数据收集阶段,如数据本地化存储、数据…

普及 SAM

参考了一些博客,如有侵权,请告知。 内部资料,包不外传。 定义 后缀自动机(SAM)的结构包含两部分,有向无环单词图(DAWG)和 parent 树。SAM 中的每个节点都同时存在于这两个结构中。 以下假设我们是关于字符串 \(s\) 的 SAM。 DAWG DAWG 是一个 DAG。 我们令起始结点为 \…