针对接口编程:何时不将方法声明为接口方法?

时间:2016-05-20 19:01:45

标签: c# interface

我开始对接口进行编程,并试图了解何时不必在接口上声明方法。

我的具体例子是,我有一些课

public class SomeClass : ISomeInterface
{

    public void SomeInterfaceMethod() 
    {
        if(doOtherStuff() == 1)
        {
            // do more stuff
        }

    }

    protected int doOtherStuff()
    {
        return 1;
    }
}

我如何知道界面上应该或不应该声明doOtherStuff的时间?

我的假设是该方法不是与其他类通信所必需的。它的简单实现细节可以完成工作。

更具体地说,我有一个消息总线。我试图决定消息的处理程序是否应该是一个接口方法。

1 个答案:

答案 0 :(得分:4)

那么,语义​​上ISomeInterface做什么

例如,假设您有一个界面:

public interface IDriveable
{
    void Drive();
}

你会合理地期望任何实现此接口的东西都是你可以驱动的东西。但这可能是很多事情。

Car可以实施IDriveable。它还将有其他方法,例如进出汽车或填充汽油的方法。那些对只是"可驾车*的东西没有意义,它们只对汽车有意义。所以他们属于那里。 (或者可能在Car实现的其他接口上。)

这不是技术问题,而是关于您正在构建的类型的自然语义的问题。 ISomeInterface并没有真正告诉我应该做些什么,所以在这里使用起来有点过于习惯了。

如果某个成员适用于该接口,请将其放在该接口上。如果不是,请不要。这真的就是它。