我正在尝试创建一个通用库,它将拥有管理数据库数据的所有方法。
这个库有很多方法,所以我想让它更有条理。我希望它与以下语法一起使用。
db.setData().insertNewAccount(username, password);
db.modifyData().deleteAccount(username, password);
db.getData().getAccount();
如果输入setData,我将如何使其工作,例如与setData相关的方法会显示。
答案 0 :(得分:3)
听起来你正在以错误的方式接近这一点 - 通常你会有AccountRepository
课程,所有成员都与账户有关;然后你会(比方说)一个ArticleRepository
课程,所有成员都与文章有关。
换句话说,按照您正在处理的类型的数据来组织而不是您是否尝试获取,更新,插入等。
然后,您可以使用依赖注入,以便为每个业务类仅提供它使用的存储库。
答案 1 :(得分:1)
如果你真的想这样做,那么你可以做这样的事情(伪代码):
class DataRepository
{
public SetDataHelper setData()
{ return new SetDataHelper(); }
public ModifyDataHelper modifyData()
{ return new ModifyDataHelper(); }
public GetDataHelper getData()
{ return new GetDataHelper(); }
}
class SetDataHelper
{
public void insertNewAccount(username, password) { ... }
}
class ModifyDataHelper
{
public void deleteAccount(username, password) { ... }
}
class GetDataHelper
{
public Account getAccount() { ... }
}
然后你可以按照自己的方式做到,更流利:
var db = new DataRepository();
db.setData().insertNewAccount(username, password);
db.modifyData().deleteAccount(username, password);
db.getData().getAccount();
答案 2 :(得分:0)
您可以创建具有不同功能的不同界面,您的类可以实现所有这些界面。然后,您的setData()
可以返回类本身,转换为相应的接口。 E.g:
interface SetData {
int insertNewAccount(A, B);
}
interface ModifyData {
int deleteAccount(A, B);
}
interface GetData {
int getAccount(A, B);
}
class DBHandler : SetData, ModifyData , GetData {
//
// Implement the interfaces...
//
// Returns the interfaces
SetData setData(){ return (SetData)this; }
ModifyData modifyData (){ return (ModifyData )this; }
GetData getData (){ return (GetData )this; }
}
它可以满足您的需求,当然也可以根据您的项目使用访问修饰符。此解决方案不会阻止您直接访问已实现的接口函数,这将需要另一个类,或者代理所有对DB类的调用。