【发布时间】:2015-03-29 13:30:11
【问题描述】:
我的 BL 中有多个类使用多个对象。
我正在努力了解应该如何实例化这些对象以及将它们存储在哪里。
我不想从服务层传递它们。 我的想法是在 BL 中创建一个单例类,所有其他人都会使用它。 这是一个合理的解决方案吗?我知道很多人认为单例是一种反模式。
谢谢
【问题讨论】:
标签: .net architecture business-logic
我的 BL 中有多个类使用多个对象。
我正在努力了解应该如何实例化这些对象以及将它们存储在哪里。
我不想从服务层传递它们。 我的想法是在 BL 中创建一个单例类,所有其他人都会使用它。 这是一个合理的解决方案吗?我知道很多人认为单例是一种反模式。
谢谢
【问题讨论】:
标签: .net architecture business-logic
不要使用单例或静态。它可以防止您的类依赖注入和不灵活。即:您不能根据组件更改类行为。
最好是使用构造函数注入:
public class Usage{
public Usage(Component1 comp1, Component2 comp2){ /*param assignment*/ }
private Component1 comp1;
private Component2 comp2;
//using comp1 and comp2
}
或者如果你认为对象组合很麻烦,你可以使用默认的对象创建,这是.Net常用的。
public class Usage{
public Component1 Comp1 = new Component1();
public Component2 Comp2 = new Component2();
//using Comp1 and Comp2
}
好处是,您可以将Components 更改为inheritance,或者您可以使用接口作为声明,以获得更好的灵活性。
【讨论】:
恕我直言,我们有处理跨业务层/服务的一些共享功能的静态类。这不应该是一个问题。
您必须划定这些类的正确用途并加以利用。如果您可以提供一些用例或发现静态/单例最适合您的用例,则可以与之保持一致
【讨论】: