singleton相关内容

数据库连接应该是单例吗?

Java 中创建单例的最佳方式是什么?数据库连接是否应该是单例(作为单例,它自动是线程安全的)?因为理论上数据库不能被多个用户同时访问. 解决方案 DB 连接通常不应是单例. 两个原因: 许多数据库驱动程序不是线程安全的.使用单例意味着如果您有许多线程,它们将共享相同的连接.单例模式不会为您提供线程安全性.它只是允许多个线程轻松共享一个“全局"实例. 就我个人而言,我认为 S ..
发布时间:2021-12-22 08:48:12 Java开发

GOF 单例模式是否有任何可行的替代方案?

让我们面对现实吧.单例模式是极具争议的话题,成群结队的程序员 栅栏的两侧.有些人觉得 Singleton 只不过是一个美化的全局变量,还有一些人信奉模式并不断使用它.我不希望 单身争议成为核心然而,我的问题.每个人都可以进行拔河比赛,然后一决高下,看看谁赢了我所关心的.我想说的是,我不相信只有一个正确的答案,我也不是故意煽动党派争吵.当我问这个问题时,我只是对 singleton-alternat ..
发布时间:2021-12-22 08:47:15 其他开发

Java中单例的其他方式

我只是在考虑编写单例类的其他方法.那么这个类是否被视为单例类? 公共类 MyClass{静态 Myclass myclass;静态{ myclass = new MyClass();}私有 MyClass(){}公共静态 MyClass getInstance(){返回我的课堂;}} 因为静态块只运行一次. 解决方案 不,不是.您没有声明 myClass private static ..
发布时间:2021-12-22 08:43:39 Java开发

nodejs 中的单例模式 - 是否需要?

我最近遇到了这篇文章如何在 Node.js 中编写单例.我知道 require 的文档声明: 模块在第一次加载后被缓存.多次调用 require('foo') 可能不会导致模块代码被多次执行. 因此,似乎每个需要的模块都可以轻松地用作单例,而无需单例样板代码. 问题: 以上文章是否提供了创建单例的全面解决方案? 解决方案 这基本上与 nodejs 缓存有关.简单明了 ..
发布时间:2021-12-22 08:40:27 前端开发

为什么在 Java 代码中实现单例模式(有时)被认为是 Java 世界中的反模式?

我在 SO 中看到一些人评论单例模式是一种反模式.我想知道为什么? 解决方案 测试 一个原因是单例不容易通过单元测试来处理.您无法控制实例化,并且就其本质而言,可能会在调用之间保持状态. 因此,依赖注入的原则很受欢迎.每个类都注入(配置)了它们运行所需的类(而不是通过单例访问器派生),因此测试可以控制要使用的依赖类实例(并在需要时提供模拟). Spring 等框架会控制它 ..
发布时间:2021-12-22 08:39:58 Java开发

单例实例声明为 GetInstance 方法的静态变量,它是线程安全的吗?

我见过单例模式的实现,其中实例变量在 GetInstance 方法中被声明为静态变量.像这样: SomeBaseClass &SomeClass::GetInstance(){静态 SomeClass 实例;返回实例;} 我认为这种方法有以下积极方面: 代码更简单,因为只有在第一次调用 GetInstance 时,才由编译器负责创建此对象. 代码更安全,因为没有其他方法可以获取对实例的 ..
发布时间:2021-12-22 08:39:43 C/C++开发

单例设计模式:陷阱

不确定使用严格的全局状态实现是否会失败.什么时候单例不适合应用程序? 解决方案 如果您正在进行单元测试,单例通常是个坏主意,而不进行单元测试(或 BDD 或验收测试)通常也是一个坏主意. 使对象具有全局状态意味着您编写的涉及这些对象的单元测试将彼此隔离且不相交.相反,您将不得不担心为每个测试重置状态,相信我……这从来没有 100% 的时间完成.如果您不重置全局状态,那么您将开始变得非 ..
发布时间:2021-12-22 08:39:24 Java开发

线程安全 C# 单例模式

我对此处记录的单例模式有一些疑问:http://msdn.microsoft.com/en-us/library/ff650316.aspx 以下代码摘自文章: 使用系统;公共密封类单例{私有静态 volatile 单例实例;私有静态对象syncRoot = new object();私人单例(){}公共静态单例实例{得到{如果(实例 == 空){锁(同步根){如果(实例 == 空)实例 ..
发布时间:2021-12-22 08:37:57 C#/.NET

迈耶斯对单例的实现如何实际上是单例

我已经阅读了很多关于单身人士,何时应该和不应该使用它们,以及如何安全地实现它们.我正在用 C++11 编写,并且遇到了 Meyer 对单例的惰性初始化实现,如 这个问题. 这个实现是: static Singleton&实例(){静态单例;返回 s;} 我从 SO 上的其他问题中了解到这是线程安全的,但我不明白这实际上是一个单例模式.我已经用其他语言实现了单例,这些总是像来自 维基百科的 ..
发布时间:2021-12-22 08:35:58 C/C++开发

用于数据库连接的全局或单例?

在 PHP 中使用单例而不是全局进行数据库连接有什么好处?我觉得使用单例而不是全局会使代码不必要地复杂. 全局代码 $conn = new PDO(...);函数 getSomething(){全球 $conn;...} 单例代码 class DB_Instance{私有静态 $db;公共静态函数 getDBO(){如果 (!self::$db)self::$db = new PDO( ..
发布时间:2021-12-22 08:35:51 PHP

关于设计模式:我什么时候应该使用单例?

荣耀的全局变量 - 成为荣耀的全局类.有人说打破了面向对象的设计. 给我一​​些场景,除了使用单例有意义的旧记录器. 解决方案 在我寻求真相的过程中,我发现实际上很少有使用单例的“可接受"理由. 在互联网上反复出现的一个原因是“日志"类(您提到过).在这种情况下,可以使用单例来代替类的单个实例,因为项目中的每个类通常需要一遍又一遍地使用日志记录类.如果每个类都使用这个日志类,依 ..
发布时间:2021-12-22 08:34:01 其他开发

有没有一种简单、优雅的方式来定义单身人士?

似乎有很多方法可以在 Python 中定义单例.是否有关于 StackOverflow 的共识意见? 解决方案 我真的不认为有必要,因为带有函数(而不是类)的模块可以很好地用作单例.它的所有变量都将绑定到模块,无论如何都不能重复实例化. 如果您确实希望使用类,则无法在 Python 中创建私有类或私有构造函数,因此您无法防止多次实例化,只能通过 API 使用约定.我仍然只是将方法放在 ..
发布时间:2021-12-22 08:33:52 Python

静态类和单例模式的区别?

静态类和单例模式之间存在什么真正的(即实际的)区别? 两者都可以在没有实例化的情况下被调用,两者都只提供一个“实例"并且它们都不是线程安全的.还有其他区别吗? 解决方案 是什么让您说单例方法或静态方法不是线程安全的?通常应该实现线程安全. 单例和一堆静态方法之间的最大区别在于单例可以实现接口(或派生自有用的基类,虽然这不太常见,根据我的经验),所以你可以像传递单例一样传递单例“ ..
发布时间:2021-12-22 08:33:26 其他开发

单例模式的缺点或缺点是什么?

单身模式 是 GoF 的 模式书,但最近它似乎被开发者世界孤立了.我仍然使用相当多的单例,特别是对于 工厂类,虽然你必须是一个对多线程问题有点小心(实际上就像任何类一样),我不明白为什么它们如此糟糕. Stack Overflow 似乎特别假设每个人都同意单例是邪恶的.为什么? 请用“事实、参考或特定专业知识"来支持您的回答 解决方案 从 Brian Button 转述: ..
发布时间:2021-12-22 08:33:02 其他开发

Java 序列化:readObject() 与 readResolve()

Effective Java 一书和其他来源很好地解释了在使用可序列化 Java 类时如何以及何时使用 readObject() 方法.另一方面,readResolve() 方法仍然有点神秘.基本上我发现的所有文件要么只提到两者之一,要么只单独提到两者. 未回答的问题是: 这两种方法有什么区别? 什么时候应该实施哪种方法? 应该如何使用 readResolve(),尤其是在返回什么 ..
发布时间:2021-12-21 22:18:21 Java开发

EF 4.0模型缓存数据,不检测修改数据

我正在开发 ASP.NET 应用程序,但我在使用 EF 4.0 模型时遇到了问题. EF 模型会检测新添加和删除的数据,但不会检测数据库中的修改数据. 这是我遇到的问题的示例. A- 数据库: 生成“Employees"数据库表的脚本 创建表 [dbo].[员工]([id] [int] IDENTITY(1, 1)非空,[名称] [nvarchar](50) NULL,约 ..
发布时间:2021-12-20 11:38:36 其他开发

如何在 Python 中记住类实例化?

好的,这是真实世界的场景:我正在编写一个应用程序,我有一个代表某种类型文件的类(在我的例子中,这是照片,但该细节与问题无关).Photo 类的每个实例对于照片的文件名都应该是唯一的. 问题是,当用户告诉我的应用程序加载文件时,我需要能够识别文件何时已加载,并使用该文件名的现有实例,而不是在同一文件名上创建重复实例. 对我来说,这似乎是使用记忆的好方法,并且有很多这样的例子,但在这种情况 ..
发布时间:2021-12-20 11:23:13 Python

Magento getSingleton() 与 getModel() 问题

我想在 Magento 中遍历一系列产品 ID.在循环中,我将产品的一些自定义属性显示为: foreach ($products as $product) {$model = Mage::getSingleton('catalog/product')->load($product['id']);echo ' '.$model->getCredits();} 问题是,如果第一项的 getCred ..
发布时间:2021-12-19 09:07:52 PHP

跨 JVM 或应用程序实例或 Tomcat 实例的单例

如果我在 Tomcat(或任何其他服务器)的单个实例上部署并运行同一应用程序的 2 个实例.然后将创建单个对象(Singleton 类): 跨 Tomcat 的单个实例(但对于同一应用程序的 2 个实例很常见)或 跨应用程序实例(2 个应用程序实例不同) 所以本质上我想了解是否总是每个 JVM 创建一个 Singleton 类的对象?如果应用程序托管在 Web 服务器(或容器)上,这 ..
发布时间:2021-12-16 21:27:57 Java开发