BLL 中的静态方法与实例方法

本文关键字:实例方法 静态方法 BLL | 更新日期: 2023-09-27 18:32:41

今天有人问我为什么在 asp.net 应用程序中为我的bll类使用这样的代码:

public class StudentBll
{
    public static DataTable GetStudents()
    {
        return DBHelper.ExecuteSp("GetStudents");
    }
    public static DataTable GetStudentById(int studentId) 
    {
        return DBHelper.ExecuteSp("GetStudentById", studentId);
    }
}

而不是

public class StudentBll
{
    public DataTable GetStudents()
    {
        return DBHelper.ExecuteSp("GetStudents");
    }
    public DataTable GetStudentById(int studentId) 
    {
        return DBHelper.ExecuteSp("GetStudentById", studentId);
    }
}

我唯一能想到的是

A) 性能 略有增加(不确定具体情况)

B) 可读性 StudentBll.GetStudents();而不是

StudentBll studentBll = new StudentBll();
studentBll.GetStudents();

然而,我对这些答案不太有信心。 有人愿意开导我吗?

BLL 中的静态方法与实例方法

关于性能,如果您无法显示增加的内容,那么它不支持您的主张。 人们还可以争辩说,静态方法调用与实例方法调用的性能提升与往返旅行和数据库时间相比可以忽略不计。

你还锁定了你的实现(或者至少迫使消费者做一些更难修改的事情)。 如果您丢失了接口的静态方法和代码,不同层的测试人员和开发人员可以构建模拟,这样他们就不会被迫使用您提供给他们的任何内容。

当我看到公共静态方法时,可测试性是我想到的第一件事。也忘记 oop - 这里没有继承(类和接口),因此你没有类实例。没有继承意味着没有抽象。没有抽象意味着紧密耦合。