【问题标题】:Public abstract method or interface?公共抽象方法或接口?
【发布时间】:2012-08-15 19:03:22
【问题描述】:

我有一个带有公共抽象方法的抽象类。我想知道我是否应该只定义一个接口并让抽象类实现它。这里有一般的经验法则吗?目前它工作得很好,但我想注意 OO 约定。目前是这样的:

public abstract class MySuckyClass
{ 
    public bool TryGetMember(GetMemberBinder binder, out object result)
    {
        result = this.GetMember(binder.Name);

        if (result == null)
            return false;

        return true;
    }

    public abstract object GetMember(string memberName);
}

【问题讨论】:

  • 我无法选择一个正确的答案,因为它们都以自己的方式正确。不过,感谢您的反馈。现在,我只是懒惰并保持原样。

标签: .net methods interface abstract


【解决方案1】:

您所问的问题有一系列不同的答案。可能会因意见而异。

就个人而言,我喜欢定义接口,然后使用抽象类提供一些固定功能。如果我需要提供不同的实现,这允许我返回到接口,但在处理在多个实现中执行相同操作的方法/属性时可以节省我的时间。

【讨论】:

  • 我知道它有一系列不同的答案。我只是想了解一下为什么人们更喜欢其中一种,然后自己做决定。
【解决方案2】:

约定是使用抽象。在这方面,这意味着一个接口或一个抽象类。

如果您的代码按原样工作,请不要仅仅为了添加不需要的接口而对其进行更改。

【讨论】:

    【解决方案3】:

    这是从 2003 年开始的,但在我的脑海中仍然如此

    Recommendations for Abstract Classes vs. Interfaces

    你可以在一个抽象类中定义构造函数,而你不能在一个接口中。

    【讨论】:

      【解决方案4】:

      Cwalina Krzysztof 有一本很棒的书,叫做“框架设计指南”。如果我没记错的话,其中一条准则是,如果您希望开发人员扩展您的类,则使用抽象类;如果您不这样做,则使用接口。

      【讨论】:

        猜你喜欢
        • 2016-09-20
        • 2015-08-02
        • 2018-08-25
        • 2017-06-08
        • 2013-07-21
        • 2013-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多