关于C#中接口的问题
这是我的问题...
我在电信行业工作,并拥有一个软件,可为给定的服务号码或站点安装地址提供最佳网络。 我的公司使用批发商的网络,我们也有自己的网络。 为了评估客户可能获得的服务,我打电话给web服务以找出在特定电话交换机上可用的服务,并根据可用的服务,我需要针对我们的网络或批发网络运行一些检查供应商。
我的问题是如何使用C#中的接口建模? 我有的软件没有使用任何接口,无论哪种类都只是为了满足代码不能在类之外生存的事实。
我熟悉接口的概念,至少在理论层面上,但不太熟悉接口编程的概念。
我在想的是如下几行:
创建一个名为IServiceQualification的接口,该接口将定义一个操作:void Qualify()。 有两个名为QualifyByNumber和QualifyByAddress的类,这两个类实现接口并定义操作Qualify的详细信息。 我是按照正确的思路思考还是有不同的/更好的方法来解决这个问题。
我已经阅读了一些接口编程的例子,但是希望在工作环境中看到这一点。
意见/建议是最受欢迎的。
我可能会让它走得更深一些,但是你在正确的轨道上。 我会亲自用Qualify方法创建IServiceQualification,然后在下面创建一个叫做ServiceQualification的抽象类,它将有一个称为Qualify的抽象方法,任何类型的限定符类都可以实现。 这使您可以在限定符中定义常见行为(必然会有一些行为),同时仍然在较高级别创建关注点分离。
接口有一个明确的目的,正确使用接口可以让你以任何你想要的方式实现,而不需要你的代码需要实现。 所以,我们可以创建一个如下所示的服务:
public bool ShouldQualify(IServiceQualification qualification)
不管我们发送的实现如何,这个方法都可以工作。 它变成了一旦你的工作不再需要改变或修改的东西。 此外,它会直接导致错误。 如果有人通过地址报告地址资格不起作用,您确切知道在哪里寻找。
看看战略设计模式。 你所描述的问题和方法听起来都非常贴切。
http://www.dofactory.com/Patterns/PatternStrategy.aspx
您应该根据合同来考虑接口。 它指定了一个类实现了某些函数签名,这意味着你的类可以用已知的参数调用它们并期望某个对象返回 - 中间发生的事情取决于接口的开发人员来决定。 这种松散的耦合使得你的课堂系统更加灵活(它与保存按键冲击无关)
下面这个例子大致针对你的情况(但需要更多的建模)。
public interface IServiceQualification{
bool Qualifies(Service serv);
}
public class ClientTelephoneService : IServiceQualification
{
public bool Qualifies(Service serv){
return serv.TelNumber.Contains("01234");
}
}
public class ClientAddressService : IServiceQualification
{
public bool Qualifies(Service serv){
return serv.Address.Contains("ABC");
}
}
//just a dummy service
public class Service{
public string TelNumber = "0123456789";
public string Address = "ABC";
}
//implementation of a checker which has a list of available services and takes a client who implements the
//interface (meaning we know we can call the Qualifies method
public class ClassThatReturnsTheAvailableServices
{
//ctor
List<Service> services = //your list of all services
public List<Service> CheckServices(IServiceQualification clientServiceDetails)
{
var servicesThatQualify = new List<Service>();
foreach(var service in services){
if(clientServiceDetails.Qualifies(service)){
services.Add(service);
}
}
return servicesThatQualify;
}
}
链接地址: http://www.djcxy.com/p/8659.html