参数化的单例模式

本文关键字:单例模式 参数 | 更新日期: 2023-09-27 17:48:52

此处的链接列出([http://www.yoda.arachsys.com/csharp/singleton.html][1] )C#中的一些单例模式。这篇文章还描述了一个明显的事实,即单例并不意味着接受"否则,对实例的第二个请求,但使用不同的参数可能会有问题"的参数。这意味着,使类工作所需的任何参数都应作为属性进行诱导。

我很想知道是否有任何参数化的单例设计模式。接受价值作为属性并不会对消费者强制执行任何内容。

参数化的单例模式

根据您的问题,您可能正在查看一个抽象工厂模式(创建几个类族的实例),该模式保留了已实例化的类的内部列表/字典,从而模仿了singleton模式的功能。

然后,您将使用该工厂类根据传入的参数请求对象,如果该对象存在于其内部列表中,则返回该对象;如果不存在,则创建一个新实例,然后将其添加到列表中并返回。

他的意思是你需要的任何参数要让课堂运转起来,应该被诱导为一种性质。

理想情况下,singleton类不应该依赖于外部代码。

如果您需要向singleton构造函数提供额外的信息,您可以创建一个对象池。

它可以是一个简单的列表或任何其他合适的数据结构。您需要使其线程安全(如果重要的话),并保证不会有多个对象使用相同的参数实例化。

基本上你会有一个一流的工厂。对于相同的参数,它将返回相同的对象。

在这种情况下,您将有N个单例对象,即具有不同状态的对象将被视为完全不同的实例。

您可以在"反转控制"容器中找到此类singleton的示例。

例如,您可以拥有一些依赖于其他服务的服务。当您调用容器时。Get(服务类型)。DI容器将使用所需的参数自动初始化服务实例,并将其返回给调用者。但是这个服务实例变成了singleton——您将无法创建具有相同参数的另一个服务。