gpt4 book ai didi

static-methods - 将 BLL 类标记为静态还是?

转载 作者:行者123 更新时间:2023-12-04 08:26:00 24 4
gpt4 key购买 nike

我已经有了一个运行良好的分层数据访问设计。但我不知道这是否是最合适的实现。
我只是想知道 BLL 类或方法应该是静态的还是应该是只有一个实例的 concreate 类?
同时,我不需要序列化 ​​BLL 类来在这样的 SOA 设计中使用它。但我不知道这个功能会带来什么。
查看以下选项:

  • BLL 类和方法是静态的
  • BLL 类不是静态的,但它的方法是静态的
  • BLL 类不是静态的,也不是它的方法。应用程序每次都应创建 BLL 类以访问其方法。
  • BLL 类不是静态的,也不是它的方法。但是每个 BLL 类只有一个实例。应用程序使用这些静态实例来使用 BLL 方法。

  • 哪个在性能和设计方面最有效?

    编辑:
    选项 1
    public static class BllCustomer
    {
    public static List<ModelCustomer> GetCustomers()
    {

    }
    }

    // usage
    BllCustomer.GetCustomers();

    选项 2
    public class BllCustomer
    {
    public static List<ModelCustomer> GetCustomers()
    {

    }
    }

    // usage
    BllCustomer.GetCustomers();

    选项 3
    public class BllCustomer
    {
    public List<ModelCustomer> GetCustomers()
    {

    }
    }

    // usage
    BllCustomer bllCustomer = new BllCustomer();
    bllCustomer.GetCustomers();

    选项 4
    public class BllCustomer
    {
    public List<ModelCustomer> GetCustomer()
    {

    }
    }

    // usage
    public static BllCustomer s_BllCustomer = new BllCustomer();
    // whenever needed
    s_BllCustomer.GetCustomer();

    最佳答案

    序列化您的 Domain/BusinessLogicLayer 类听起来有点不寻常,因为您的 Domain 层通常包含您的业务规则和复杂的处理逻辑。通常,您需要序列化您的 DataTransformation/POCO 类。

    会有边际performance静态或具体类/方法之间的差异。我会回避用于主要业务逻辑的静态类和方法,因为它们很难模拟/单元测试,而且不能使用 IoC 容器。因此,考虑到这一点,我会推荐您解释的选项 3。还发布了一些非常有用的答案here .

    关于static-methods - 将 BLL 类标记为静态还是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8744373/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com