我有一个相对复杂的工厂方法:
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);
这被认为是不好的做法吗?
修改 固定来源
答案 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);
但是,只要小心谨慎使用此代码,共享数据库连接应用程序范围可能会很麻烦,尤其是在多线程环境中。