Design patterns 社区什么时候认为使用独生子女是合适的?

Design patterns 社区什么时候认为使用独生子女是合适的?,design-patterns,singleton,Design Patterns,Singleton,可能重复: 根据Ewan Makepeace先前提出的关于单身模式的优秀问题,我想我会问“社区什么时候认为使用单身模式是合适的?” 让我举一个例子来评论: 我有一个“IconManager”单身汉。它首先读取一个属性文件,该文件指示我的图标在磁盘上的位置,然后读取所有图标并缓存它们以备将来使用 图标可以在我的整个UI(选项卡、表格、框架等)中使用。。。因此,通过静态单例方法访问它们非常方便。我还想确保图标被读取一次,并且只读取一次(如果每次我需要一个图标时,从磁盘读取图标的速度非常慢),社区是

可能重复:

根据Ewan Makepeace先前提出的关于单身模式的优秀问题,我想我会问“社区什么时候认为使用单身模式是合适的?”

让我举一个例子来评论:

我有一个“IconManager”单身汉。它首先读取一个属性文件,该文件指示我的图标在磁盘上的位置,然后读取所有图标并缓存它们以备将来使用

图标可以在我的整个UI(选项卡、表格、框架等)中使用。。。因此,通过静态单例方法访问它们非常方便。我还想确保图标被读取一次,并且只读取一次(如果每次我需要一个图标时,从磁盘读取图标的速度非常慢),社区是否认为这是一个合适的单例使用?如果没有,还可能如何实施


Singleton还有哪些其他有效用途?

另一种方法是创建类的实例,加载图标,然后将对该实例的引用传递给需要访问资源的每个控件。这样,将来您可以拥有多个图标加载程序,并根据需要传递它们。将来会更灵活,但有一个很大的缺点,就是让你把引用传递给无数个控件。

你的IconManager实现了工厂模式,它会构建图标。你可能只需要一个工厂就可以制作图标。因此,在本例中使用单例IMHO没有问题。我已经用几个这样的集中工厂构建了软件,一切都很顺利


另请参阅此线程:

我实际上从未使用过单例,但很少使用设计模式。我认为,当工厂和网关模式等其他模式需要它们时,它们是非常有价值的。然而,它们几乎从来都不是好的


你可能想考虑一下它,它给你带来了所有的好处,而没有很多缺点。这还允许您拥有一个富对象,该对象的状态恰好具有您要查找的全局属性。

当访问可能只有一个活动连接的资源时,可以很好地使用单例。许多硬件设备都有此限制

假设您正在连接到只允许一个连接的。Singleton模式将在首次使用时创建此连接并保持其打开状态。每当你需要一张来自相机的照片,可能来自多个来源,你可以点击单身者知道,所有其他考虑的问题,这张照片将是可用的


如果相机的初始连接时间也很慢,则以这种方式保持连接打开,而不是打开连接,抓取一张照片并再次关闭连接可能会更有效率。

是的,我试图避免的是它到处传播。:-)不用担心,有一个指向重复信息的链接是很好的,不过万一有人发现了这个链接并想了解更多。而且,我觉得把你和那个问题联系起来要比自己回答容易得多。我不认为你是个坏人:)