使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性。
抽象类用于公共,提高复用性。(高可用)
接口用于扩展和可维护。(降耦合)
举个例子:
从武汉出发去北京天安门这个需求。
方案一:骑共享单车去最近的地铁口,然后转2号线或者4号线到武汉高铁站或者武汉天河机场,换成通往北京的高铁或者飞机。 像这种可以提供一整套的行程规划,按时间话费最少和费用花费最少两种模式设计,这种高度封装的方案适合用抽象类。
方案二:还是武汉去北京这个需求。
可以徒步旅行,可以骑共享单车,可以自驾游,可以叫出租车等等,像这种比较单一性,耦合度不高的方案适合用接口。便于需求变更的维护性。