建议102:区分接口和抽象类的应用场合
接口和抽象类有一些显而易见的区别:
这些区别导致两者的应用场景不同:
从某种角度来看,抽象类比接口更具备代码的重用性。子类无须编写代码即可具备一个共性的行为。
采用抽象类的另一个好处是,如果为为基类增加一个方法,则继承该基类的所有子类自然就会具备这个额外的方法,而接口却不能。如果接口增加一个方法,必须修改所有的子类。所以,接口一旦设计出来就应该是不变的。抽象类则可以随着版本的升级增加一些功能。
接口的作用更倾向于说明类型具有某个或者某种功能。接口只负责声明,而抽象基类往往还要负责实现。
接口的职责必须单一,在接口中的方法应该尽可能的简练。
我们应该在实际设计中,充分考虑到类型的应用场合,根据它所要完成的功能,来决定将类型设计成抽象类还是接口。
转自:《编写高质量代码改善C#程序的157个建议》陆敏技
【转】编写高质量代码改善C#程序的157个建议——建议102:区分接口和抽象类的应用场合
原文地址:http://www.cnblogs.com/farmer-y/p/8000117.html