c#Abstract实现接口的类

c# Abstract Class implementing an Interface

我已经看到了下面的代码布局阅读论坛和其他博客文章,并进行了修改,以便提出一些问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public interface IService<T>
{
    int Add(T entity);
    void Update(T entity);
}

public abstract class ServiceBase<T> : IService<T>
{
    public int Add(T entity) { ... }
    public void Update(T entity) { ... }
}

public interface ICarService : IService<Car>
{
}

public class SomeBaseClass : ServiceBase<Car>, ICarService
{
    public int Add(Car entity);
    public void Update(Car entity);
}

我不明白的是让抽象类实现接口的好处。对我来说,它只是感觉有点重复,我无法理解抽象类实现接口的好处。

  • 为什么抽象类ServiceBase不按原样定义而不需要继承IService接口?这是代码加倍吗?
  • 为什么SomeBaseClass还必须暗示ICarService呢?服务基础是否足够?

  • 1:《额外的抽象基两类允许你进化的接口没有打破执行。我不应该有一个抽象类和基地,你会在他们的界面,简单的说,城市的一个新的综合方法。然后你的实施是破碎的,因为你的课不实施任何语言的接口。

    使用额外的抽象类,你可以单独的基本:如果你添加一个新的方法的接口,你可以提供一个虚拟的执行基础类和你的子类可以在鸭子一样,可以通过两个匹配的新接口,后来一点的时间。

    另外,这种组合允许你定义一个合同(使用的)接口和提供了一些默认的机制(使用抽象类的基础)。任何人谁的精细与inherit defaults可以从抽象类的基础。任何人谁想嫁给超级精细控制的任何关于实施《小零售CAN接口的表壳,手动上弦。

    广告二:从技术的观点有点不需要实施的接口的太空舱。但这一次,允许你进化的东西分别从每个其他。一CarServiceService酸性的,但也许是相当有趣的。也许只有一CarService需要一些额外的东西,不应该去为《共同的接口和类的服务为基础。

    我想这就是为什么);