关于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

上一篇: Question about interfaces in C#

下一篇: Is Node.js still "bleeding