我的同事基于我的一个类(它是一个实例类)告诉我,如果你的类中没有字段(支持字段),只需在类中使所有方法都是静态的,或者让类成为单例,这样你就可以了不必使用关键字new来调用此BL类中的方法.
我认为这是常见且良好的做法?基本OOP?我只是想看看人们对此的看法.
我认为基本上他说的是因为没有状态,所以不需要将方法作为实例方法.
在这种情况下,我不确定每次作为一个选项让它成为一个单身......是他给我的某种模式或好建议吗?
这是我正在讨论的类(请不要在此主题中重新发布任何代码,这是私有的):http://www.elbalazo.net/post/class.txt
Ree*_*sey 13
调用new和构造类引用几乎没有什么缺点,特别是如果类没有状态.在.NET中分配速度很快,所以我不会单独使用它来证明类是静态的.
通常情况下,如果类没有特定的上下文,我觉得类应该是静态的 - 如果你将类作为"实用程序"方法或非上下文特定操作的占位符使用,那么成为静态类是有意义的.
如果该类具有特定的上下文需求和具体意义上的含义,那么即使它没有状态,它也可能无法证明是静态的(尽管这种情况很少见).有时候类的目的是由它的引用本身定义的,它提供了一个排序的"状态"(引用本身)而没有任何局部变量.
话虽如此,静态类和单例之间存在很大差异.单例是一种不同的动物 - 当你需要一个实例时,你想要使用它,但只需要创建一个类的一个实例.单例中有状态,但您使用此模式强制只有一个状态副本.这有着非常不同的含义,我强烈建议避免使用单例来防止需要"调用新".
当一个类应该是静态的时候没有绝对的规则.它可能没有状态,但您可能需要它用于引用相等或锁定.当类的目的适合作为静态类实现时,类应该是静态的.在这些情况下,你不应该遵循严格的规则; 用你感觉'是对的.
没有状态使它成为静态的候选者,但在进行仲裁重构之前,先看一下它的用途.
单独缺乏状态就没有理由让方法变得静止.有很多情况下无状态类仍然应该有实例方法.例如,每当你需要在例程之间传递某些逻辑的特定实现时,使用具有实例方法的类就更容易,因为它允许我们使用接口:
interface IConnectionProvider
{
object GetConnectedObject();
}
Run Code Online (Sandbox Code Playgroud)
我们可以有上面的十几个实现,并将它们传递给需要的例程IConnectionProvider.在这种情况下,静态是一个非常笨拙的选择.
new在无状态类中使用方法没有任何问题.
| 归档时间: |
|
| 查看次数: |
1618 次 |
| 最近记录: |