1
5
如果出于某种原因,需要将工厂和构造的类放在单独的程序集中(这意味着只需使用
|
2
23
如果工厂位于同一程序集中,并且您只需要针对实例化类的外部程序集提供保护,则可以将构造函数设置为内部。我所知道的防止所有其他类(包括同一程序集中的类)发生这种情况的唯一方法是使实例化的类成为工厂的嵌套私有类,并仅将其作为接口公开。如果类是它自己的工厂(静态工厂方法),那么可以将构造函数设置为私有的,正如其他人所提到的。 |
3
11
使其构造函数私有,并将工厂方法作为类本身的静态方法提供。
在大多数情况下,您只需将构造函数设置为内部构造函数,就可以将工厂划分为自己的类—我发现阻止自己的团队使用它通常是不值得的
|
4
5
使建造师内部和房子的工厂在同一装配。
在同一组件中
如果工厂不能在同一个装配中,或者此方法不适用于您,请查看 Dan's answer |
5
2
不管怎样,从工厂返回的是一些接口/抽象类,而不是具体类型。 当然,您不能将返回类型强制转换为客户机代码中的某个具体类型,但首先这是设计不好的标志,其次,您可以使用嵌套私有类继承的更具体的接口/抽象类来解决它。 您可以在这里参考Eric Lippert的答案(对于类似的问题): Why Would I Ever Need to Use C# Nested Classes |
6
1
在某处 |
7
1
很多人都提到过使用内部方法,但是您也可以保护构造函数并派生一个只包含静态工厂方法的类。这并不妨碍其他人做同样的事情,但在限制对构造函数的直接访问方面做得很好。 |
8
0
内部的 如果你有一个单独的类作为工厂(我认为你应该)。如果工厂位于不同的部件上,请使用InternalVisible属性。 |
shortCircuit77 · 抽象类有选择地公开基于派生类型的方法 2 年前 |
trzczy · 如何在ZF3中触发fieldset工厂 6 年前 |
Zuri · TableView中的自定义复选框 6 年前 |
AndreasN · C#异步(工厂)方法和LINQ[关闭] 6 年前 |
Agustin Castro · ddd中命令处理程序的正确使用 7 年前 |
Bruno · 如何在Scala中创建具有有界类型参数的自定义序列? 7 年前 |