静态包装复杂函数调用不好吗?

时间:2014-07-17 11:17:03

标签: c# sql .net

我有一个相对复杂的工厂方法:

DatabaseAccessFactory.Instance.GetDatabaseAccess().GetUserData(userId) 
DatabaseAccessFactory.Instance.GetDatabaseAccess().InsertData(dataStr1,dataStr2);

为了避免必须调用这个大型查询,我不想在静态类中包装这些调用:

public static class SQL
{
    public static User GetUserData(int userId)
    {
        return DatabaseAccessFactory.Instance.
            GetDatabaseAccess().GetUserData(userId);
    }
    public static void InsertData(String dataStr1, String dataStr2)
    {
        DatabaseAccessFactory.Instance.
            GetDatabaseAccess().InsertData(dataStr1,dataStr2);
    }
}

所以我可以简单地打电话:

SQL.GetUserData(userId) 
SQL.InsertData(dataStr1,dataStr2);

这被认为是不好的做法吗?

修改 固定来源

1 个答案:

答案 0 :(得分:2)

您当前的解决方案仅从方法调用中删除Instance部分,更好的替代方法是完全删除嵌套的点符号,例如。

public static class SQL
{
    static IDatabase db = DatabaseAccessFactory.Instance.GetDatabaseAccess();

    public static User GetUserData(int userId)
    {
        return db.GetUserData(userId);
    }

    public static void InsertData(String dataStr1, String dataStr2)
    {
        db.InsertData(dataStr1, dataStr2);
    }
}

这样你的用法就是

SQL.GetUserData(userId);
SQL.InsertData(dataStr1, dataStr2);

但是,只要小心谨慎使用此代码,共享数据库连接应用程序范围可能会很麻烦,尤其是在多线程环境中。

相关问题