Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在这种情况下,单例实例有意义吗?

在这种情况下,单例实例有意义吗?
EN

Stack Overflow用户
提问于 2017-03-06 12:44:37
回答 1查看 349关注 0票数 1

我知道这是程序员们非常争论的话题,我已经读到了很多关于单例模式的缺点和优点的文章。

不过,我还是想问一下单身模式。

我正在创建一个小型PHP框架,并且我在框架中处理Cookies的方式被卡住了。

预付:

框架为每个模块提供工厂功能,因此从外部看,不清楚实例是否为单例。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$db     = Framework::DB(); // always a new instance
$cookie = Framework::Cookie(); // singleton (maybe?)

My take:

提供一个单例cookie实例,该实例可用于修改cookie (set、delete、get):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Cookie {
     public function set($name, $value) {

     }
}

我的推理是cookie是一个全局状态,您不能创建一个新的cookie环境-它总是由浏览器提供的。对我来说,实例化一个新的cookie类实例是没有意义的。

但也许我遗漏了什么。

从本质上说,我想知道是否有更好的解决方案(不使用单例模式),或者这是否是单例具有实际意义的情况之一。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-06 13:27:13

Singleton基本上意味着您只能创建一个类的一个实例,我个人不认为将其硬编码到一个类中有什么意义,因为一般来说,类是为了创建多个对象而创建的。

对于您的数据库示例来说,对于大多数只处理1个数据库的网站来说,应该是可以的。但是,如果将来您希望使用相同的API连接到外部数据库,怎么办?哦,你不能因为我实现了一个单例接口。

现在让我们来谈谈你的cookie例子,每个网站都有存储多个cookie的能力。为什么要创造一个单身的人呢?设计该类,以便$cookie2 = new Cookie('name')引用另一个cookie。是的,所有这些都可以通过一个类来完成,在这个类中,每次您需要解析一个名称来确定将其放入哪个cookie中。

很少有单例设计模式是有用的,至少在PHP中是这样。大多数人使用容器来存储引用到类的单个实例(基本上是单例)的变量。但是,可以将该容器更改为另一个容器,可能会更改为类似于引用不同数据库和不同cookie的测试环境,同时使用相同的API。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42635194

复制
相关文章
单例这种设计模式
随着我们编写代码的深入,我们或多或少都会接触到设计模式,其中单例(Singleton)模式应该是我们耳熟能详的一种模式。本文将比较特别的介绍一下Java设计模式中的单例模式。
技术小黑屋
2018/09/05
3970
php单例模式实例
当我们在进行面向对象开发时可能会创造多个new对象,每次去创建一个对象时,对系统负荷造成了损失,为了减少new对象造成的资源损耗从而诞生了单例模式。 单例模式:通过单例模式的方法创建的类在当前进程中只有一个实例 实例:
九霄道长
2021/03/02
1.4K0
在面试通过通过单例模式来展示实例
在面试初级和高级开发时,一般会问设计模式的问题。通常会让写下单例模式的实现方法,或者让结合项目,说下用过的设计模式,在本文里,就将讲述单例模式的多种写法,以此告诉大家如何在面试中展示实力。
用户1153489
2020/02/18
3890
单例模式-唯一实例
其实这样写是可以的,但是会影响效率。当一个实例创建之后,再次进行这个方法的调用,会进行加锁,然后返回这个实例
杨小杰
2019/07/04
6030
单例模式谁都会,破坏单例模式听说过吗?
单例模式谁都会,懒汉、饿汉、双重校验锁、匿名内部类、Enum,倒背如流了都,那如何破坏单例呢?
飞天小牛肉
2022/11/08
1K0
单例模式谁都会,破坏单例模式听说过吗?
你真的会写单例模式吗?
顾名思义,饿汉法就是在第一次引用该类的时候就创建对象实例,而不管实际是否需要创建。代码如下:
JAVA葵花宝典
2019/05/24
3730
单例模式只有饿汉式和懒汉式吗?这几种单例模式你见过吗
单例模式有几种?饿汉式、懒汉式。这两种是最常见的。还有几种是对其扩展的。具体如下:
凯哥Java
2019/08/22
6480
单例模式只有饿汉式和懒汉式吗?这几种单例模式你见过吗
单例模式实例读取配置文件
请结合单例模式实现基于txt的配置文件的读取。 Txt文件可以自行建立,例如: 1 2003 Spring Soccer League (Spring '03) 2 2003 Summer Summer Soccer Fest 2003 3 2003 Autumn Autumn Soccer League (2003) 4 2004 Spring Soccer League (Spring '04) 5 2005 Summer The Summer of Soccer Love 2005 6 2006 Autumn Autumn Soccer League (2006)
Twcat_tree
2022/11/30
2830
单例模式实例读取配置文件
go语言单例模式(Singleton)实例分析
单例模式(Singleton):表示一个类只会生成唯一的一个对象。单例模式具有如下性质: A.这些类只能有一个实例; B.这些能够自动实例化; C.这个类对整个系统可见,即必须向整个系统提供这个实例。 package singleton import "fmt" var _instance *object type object struct { name string } func Instance() *object { if _instance == nil { _ins
李海彬
2018/03/26
8080
【单例模式】饿汉式,懒汉式?JAVA如何实现单例?线程安全吗?
.29.
2023/10/25
2260
你写的单例真的对吗
单例模式是设计模式中最容易理解、最容易上手的设计模式,同时也是最容易出错的设计模式。它的实现写法有多种,但是并不都是正确的写法。 1饿汉模式 饿汉,即迫切的、立马的,所以饿汉模式又称作立即加载,下面代码实现是它最普遍的写法。 public class SingletonObject { private static final SingletonObject singletonObject = new SingletonObject(); private Singleto
JavaQ
2018/04/04
7300
哪些情况下的单例对象可能会破坏?
昨天,有位小伙伴在评论区留言,希望我分享一些设计模式相关的面试题。设计模式本身是很抽象的,但是在很多面试中又经常被问到,很多小伙伴其实都能答得上,但是又不知道怎么样回答才能让面试官满意,往往越简单的知识越能够体现出核心竞争力。
Tom弹架构
2022/08/22
2860
哪些情况下的单例对象可能会破坏?
避免在Swift中使用单例
"我知道单例是不好的,但是......",这是开发人员在讨论代码时经常说的话。社区里似乎有一个共识,那就是单例是 "不好的",但同时苹果和第三方的Swift开发者都在应用内部和共享框架中不断使用它们。
韦弦zhy
2022/03/30
5110
在Python中实现单例模式
有些时候你的项目中难免需要一些全局唯一的对象,这些对象大多是一些工具性的东西,在Python中实现单例模式并不是什么难事。以下总结几种方法: 使用类装饰器 使用装饰器实现单例类的时候,类本身并不知道自己是单例的,所以写代码的人可以不care这个,只要正常写自己的类的实现就可以,类的单例有装饰器保证。 def singleton(cls): instancec = {} def _wrapper(*args,**kwargs): if cls not in instance
Jetpropelledsnake21
2018/05/02
1.2K0
并发情况下,单例模式之双重检验锁陷阱
在我前面有写过一篇关于单例模式的几种创建的文章,最近在看多线程的时候,发现如果使用双重检验锁则可能会发生问题,接下来看我细细道来
黎明大大
2020/10/19
8700
你真的会写单例模式吗——Java实现
单例模式可能是代码最少的模式了,但是少不一定意味着简单,想要用好、用对单例模式,还真得费一番脑筋。本文对Java中常见的单例模式写法做了一个总结,如有错漏之处,恳请读者指正。
哲洛不闹
2018/09/18
5310
你真的会写单例模式吗——Java实现
你真的会写JAVA的单例模式吗?
单例模式可能是代码最少的模式了,但是少不一定意味着简单,想要用好、用对单例模式,还真得费一番脑筋。本文对Java中常见的单例模式写法做了一个总结,如有错漏之处,恳请读者指正。
乱敲代码
2019/06/03
4580
过度设计有意义吗
看着自己每次根据设计原则及模式的代码重构,虽效果不错,但也自省:如果我的每段代码都这么写,是不是过度设计?把握设计的度,需长久锤炼。行业也总结了很多原则,帮助我们把握设计的度。它们是一种思考方法、一种行为准则。
JavaEdge
2023/01/15
4670
这 9 种单例模式你都会吗?
在学单例模式之前,我想大家都会自己问自己:“单例模式存在的意义是什么?我们为什么要用单例模式?”
陈宇明
2020/12/16
7850
你了解单例模式的最佳实践吗?
『单例模式』是一种创建型的设计模式,保证一个类只有一个实例,并提供一个访问它的全局访问点。
Single
2021/04/20
5010

相似问题

这种单例模式有意义吗?

30

这种情况下如何在python中重置单例实例?

122

这种单例设计模式正确吗?

31

单例Stream.empty有意义吗?

23

单例模式对套接字有意义吗?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文