[英]C# Interface for multiple classes
我有一个数据提供程序项目来访问数据库。 这是由各种类(PersonDataProvider,JobDataProvider ...)组成我想创建一个接口。 我是否必须为每个类创建一个接口? 我很想创建一个接口而不是继承所有类。 这涉及使所有项目类部分并更改类名.......但我认为这不是最好的解决方案。 有什么建议吗?
您没有继承实现它的接口。 没有必要让一个类部分为它添加接口。
接口是类订阅的合同,表示它将遵循接口中描述的方法并将适当地实现它们。 对于您的场景,您将创建单个接口并在类中实现它,然后您可以将各种访问器类的实例作为接口的实例传递。
例如:
public interface IDataProvider
{
void LoadData();
}
然后,数据提供者将如下所示:
public class MyDataProvder1 : IDataProvider
{
// Some methods
// Must implement LoadData
public void LoadData()
{
// Do something
}
}
public class MyDataProvder2 : IDataProvider
{
// Some methods
// Must implement LoadData
public void LoadData()
{
// Do something
}
}
然后,您可以将对象作为IDataProvider传递,如下所示:
IDataProvider DataProviderA = new MyDataProvider1();
IDataProvider DataProviderB = new MyDataProvider2();
// Call function that expects an IDataProvider
DoSomething(DataProviderA);
DoSomething(DataProviderB);
...
public void DoSomething(IDataProvider DataProvider)
{
DataProvider.LoadData();
}
希望能为你清除它。
我认为你正在接近这个错误。
当你创建一个界面时,你正在为这些类签订合同。 可以把它想象成“我的班级将充当 IMyInterface”。
如果所有类都有一个共同的使用场景,那么单个通用接口可能是合适的( IDataProvider
,给定类名......?)。
使用界面取决于您希望如何安排类。 接口允许某种即插即用的行为。 因此,如果您需要单个接口,这意味着您将在实现该接口的所有类中拥有一组接口。 在这种情况下,您的类PersonDataProvider,JobDataProvider等将具有相同的方法集。 如果您觉得,它们需要与众不同,并且仍然可以通过单一的提供者外观提供,您可以考虑使用外观模式。
Facade将为各个提供者提供接口,提供者类将实现它们。
首先,我假设所有xDataProvider
类都有标准的方法调用。 例如,您在PersonDataProvider
类上使用Select
方法而不是SelectPerson
方法。 如果没有,您需要做一些工作才能使其成为有效的练习。
在Visual Studio中,有一个Extract Interface重构选项。 右键单击xDataProvider类,然后选择Refactor - Extract Interface 。 现在命名它(例如IDataProvider)并在界面中选择所需的方法/属性,单击OK,然后单击此类完成。
然后在其他xDataProvider类中实现此IDataProvider接口。 假设您已经在所有DataProvider类中实现了类似的方法,则不必再编写任何代码(超出: IDataProvider
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.