组织方法以更好地访问它们

我正在尝试创建一个通用库,它将拥有管理数据库数据的所有方法。

这个库将有很多方法,所以我想让它更有条理。 我希望它与以下语法一起使用。

db.setData().insertNewAccount(username, password); db.modifyData().deleteAccount(username, password); db.getData().getAccount(); 

如果我键入setData,我将如何使其工作,例如与setData相关的示例方法将显示。

如果你真的想这样做,那么你可以做这样的事情(伪代码):

 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(); 

听起来你正在以错误的方式接近这一点 – 通常你会有类似AccountRepository类的东西,所有成员都与账户相关; 然后你会(比方说)一个ArticleRepository类,其中包含与文章相关的所有成员。

换句话说,按照您正在处理的数据类型进行组织而不是您是否尝试获取,更新,插入等。

然后,您可以使用依赖项注入,以便为每个业务类仅提供它使用的存储库。

您可以创建具有不同function的不同接口,您的类可以实现所有这些接口。 然后,你的setData()可以返回类本身,转换为相应的接口。 例如:

 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类的调用。