[英]Is static wrapping of complex function calls bad practice?
I have a Factory Method that is relatively complex to call: 我有一个调用相对复杂的Factory方法:
DatabaseAccessFactory.Instance.GetDatabaseAccess().GetUserData(userId)
DatabaseAccessFactory.Instance.GetDatabaseAccess().InsertData(dataStr1,dataStr2);
To avoid having to call this large querys i wrant to wrap these calls in a static class: 为了避免调用这么大的查询,我希望将这些调用包装在一个静态类中:
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);
}
}
So that i could simply call: 这样我就可以简单地打电话给:
SQL.GetUserData(userId)
SQL.InsertData(dataStr1,dataStr2);
Is this considered bad practice? 这被认为是不良做法吗?
Edit: Fixed Source 编辑:固定源
Your current solution only removes the Instance
part out of the method call, a better alternative would be to completely remove the nested dot-notation eg 您当前的解决方案仅将
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);
}
}
That way your usage would be 这样你的用法就可以了
SQL.GetUserData(userId);
SQL.InsertData(dataStr1, dataStr2);
However, just be wary how you intend on using this code, sharing database connections application-wide can be troublesome, especially in a multi-threaded environment. 但是,请警惕您打算如何使用此代码,在应用程序范围内共享数据库连接可能会很麻烦,尤其是在多线程环境中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.