Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
Design patterns 您希望使用单例还是分派另一个类';事件通过一系列的责任?_Design Patterns_Oop - Fatal编程技术网

Design patterns 您希望使用单例还是分派另一个类';事件通过一系列的责任?

Design patterns 您希望使用单例还是分派另一个类';事件通过一系列的责任?,design-patterns,oop,Design Patterns,Oop,一般来说,什么会使您的程序更易于维护 我知道很多人大量使用单身,但这似乎是一种逃避,它创造了一种全球性的垃圾抽屉组织。从一些线索判断,很多人不喜欢单身,理由很充分。看 一般来说,责任链听起来更好,因为它允许不同的处理者轮流处理事件,所以它是一种更灵活的方法 如果没有更多的细节,就很难给出更具体的答案。这在很大程度上取决于你试图解决的问题 如果保证有一个特定事件的处理程序是用石头建造的,那么责任链很可能过于工程化,并且会使系统过于复杂。这可能会变成一场维护噩梦。只有一个链环的链环不是一个链

一般来说,什么会使您的程序更易于维护


我知道很多人大量使用单身,但这似乎是一种逃避,它创造了一种全球性的垃圾抽屉组织。

从一些线索判断,很多人不喜欢单身,理由很充分。看

一般来说,责任链听起来更好,因为它允许不同的处理者轮流处理事件,所以它是一种更灵活的方法


如果没有更多的细节,就很难给出更具体的答案。

这在很大程度上取决于你试图解决的问题

如果保证有一个特定事件的处理程序是用石头建造的,那么责任链很可能过于工程化,并且会使系统过于复杂。这可能会变成一场维护噩梦。只有一个链环的链环不是一个链环,单链子可能更合适

然而,如果系统需要更松散地配置,事件的处理程序更依赖于特定的上下文,那么单例将过于紧密地耦合。如果您发现自己的代码如下:

if (event == "this")
  do this
else if (event == "that")
  do that
。。在你单身的时候,责任链可能会更好

始终为正确的工作选择正确的工具

在需要时,也不要害怕改变方法。如果问题一开始很简单,那就从单例开始。事情可能再复杂不过了,每个人都很开心。如果随着时间的推移,事情变得越来越复杂,并且您注意到自己在单例代码中添加了大量分支,那么是时候适应了!撕下单件并插入链条。。。或者其他更合适的模式


专注于松散耦合代码背后的想法是使插入和输出功能变得更容易,因此解决方案只需要在需要的时候存在。

单例是一种全局性的解决方案。它们似乎对TDD模型造成了严重破坏。此页面链接到AsUnit主页上的:


与其静态访问单例,不如选择传递或存储对所需对象的引用。控制反转和复合模式有助于取代单一模式。

没有细节很难说——你想解决什么问题?一般来说,单例被认为是邪恶的,特别是在过度使用的情况下——但这适用于大多数模式——过度使用/不适用的使用将它们变成反模式。但同样地,单身者也有有效的用途。更多的细节肯定会给你一个更有用的答案。我喜欢“全球垃圾抽屉组织”这个表达。