Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 策略模式是否应该始终作为单例实现?_C#_.net_Design Patterns_Singleton_Strategy Pattern - Fatal编程技术网

C# 策略模式是否应该始终作为单例实现?

C# 策略模式是否应该始终作为单例实现?,c#,.net,design-patterns,singleton,strategy-pattern,C#,.net,Design Patterns,Singleton,Strategy Pattern,在.NET/C#中,策略模式是否应该始终作为一个单例实现?您能否提供一些示例代码,说明这在C#中是什么样子的?策略可能有参数或状态。可以使用继承来扩展策略。这些用法意味着该策略有多个实例,因此始终要求一个策略成为一个单独的策略肯定不是一个好主意。看看这篇博文:。它不使用单例。这个也不使用:。。。或者这个:这个是一个很好的例子。在我看来,试图用任何一种语言将战略模式塞进一个单独的个体是一个坏主意——它忽略了单一责任原则。@neuronaut:嗯,任何试图从一堆策略类中创建一个单例的答案都没有任何意

在.NET/C#中,策略模式是否应该始终作为一个单例实现?您能否提供一些示例代码,说明这在C#中是什么样子的?

策略可能有参数或状态。可以使用继承来扩展策略。这些用法意味着该策略有多个实例,因此始终要求一个策略成为一个单独的策略肯定不是一个好主意。

看看这篇博文:。它不使用单例。这个也不使用:。。。或者这个:这个是一个很好的例子。在我看来,试图用任何一种语言将战略模式塞进一个单独的个体是一个坏主意——它忽略了单一责任原则。@neuronaut:嗯,任何试图从一堆策略类中创建一个单例的答案都没有任何意义。啊……如果一个策略可以使用继承进行扩展,那么它就不应该作为单例实现,因为单例最好是密封的,对吧?子类的实例也是父类的实例,所以,若不密封singleton类,最终可能会得到它的多个实例。singleton和继承有什么关系?我刚才在前面的评论中解释过,@user2864740。如果你允许使用子类,你很可能会得到该类的多个实例,因为子类实例也是父类的实例。