在我们日常的软件设计过程中,经常会遇到很多的决策,有时会感到一些左右为难、或者左右都可以的窘境。比如这个问题,究竟是采用接口的方式,还是继承的方式来解决问题?
继承,是面向对象分析与设计最常用的方式之一,在应用系统的设计过程中,得到了广泛的使用。它的主要不足是,继承后的系统需要囊括整个继承树的信息,对新系统而言,冗余部分相当大;二是子类对父类的耦合很紧密,不利用系统的扩展;
接口,有很大的灵活性。接口的不同实现方式,对于使用接口的客户而言,只是一种抽象的耦合。改变接口的实现,对客户代码的影响很小。
因此,如果某个功能的实现比较复杂,今后发生变化、引入不同不同实现方式的可能性比较大,一般采用接口的方式。
如果有大量的功能,已经在父类得到实现,可以直接使用,并且,这些功能已经比较成熟,则采用继承的方式。