【问题标题】:Programming against interfaces: When not to declare methods as interface methods?针对接口进行编程:何时不将方法声明为接口方法?
【发布时间】:2016-05-20 19:01:45
【问题描述】:

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

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

public class SomeClass : ISomeInterface
{

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

    }

    protected int doOtherStuff()
    {
        return 1;
    }
}

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

我的假设是当方法不需要与其他类进行通信时。它只是完成工作的实现细节。

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

【问题讨论】:

  • @EdHeal 语言是 C#

标签: c# interface


【解决方案1】:

好吧,从语义上讲,ISomeInterface 是什么?它做什么

例如,假设你有一个接口:

public interface IDriveable
{
    void Drive();
}

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

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

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

如果某个成员适用于接口,则将其放在接口上。如果不是,不要。这就是它的全部内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 2013-09-23
    • 2016-02-16
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多