业务层辅助对象

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,或者您可以使用接口作为声明,以获得更好的灵活性。