业务层辅助对象
Buisness layer helper objects
我的 BL 中有多个 classes 使用的多个对象。
我想了解应该如何实例化这些对象以及将它们存储在何处。
我不想从服务层传递它们。
我的想法是在 BL 中创建一个单例 class 并且所有其他人都会使用它。
这是一个合理的解决方案吗?我知道很多人认为单例是一种反模式。
谢谢
恕我直言,我们有静态 类 来处理跨业务层/服务的一些共享功能。那应该不是问题。
你必须明确这些 类 的正确用途并加以利用。如果您可以提供一些用例或发现静态/单例最适合您的用例,您可以与之保持一致
不要使用单例或静态。它可以防止你的 class 依赖注入和不灵活。即:您不能根据组件更改 class 行为。
最好是使用构造函数注入:
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
,或者您可以使用接口作为声明,以获得更好的灵活性。
我的 BL 中有多个 classes 使用的多个对象。
我想了解应该如何实例化这些对象以及将它们存储在何处。
我不想从服务层传递它们。 我的想法是在 BL 中创建一个单例 class 并且所有其他人都会使用它。 这是一个合理的解决方案吗?我知道很多人认为单例是一种反模式。
谢谢
恕我直言,我们有静态 类 来处理跨业务层/服务的一些共享功能。那应该不是问题。
你必须明确这些 类 的正确用途并加以利用。如果您可以提供一些用例或发现静态/单例最适合您的用例,您可以与之保持一致
不要使用单例或静态。它可以防止你的 class 依赖注入和不灵活。即:您不能根据组件更改 class 行为。
最好是使用构造函数注入:
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
,或者您可以使用接口作为声明,以获得更好的灵活性。