前面回顾
在拆分最小的粒度的时候,如果不能拆分了,用共同的方法,可以用继承,如果还能拆分,我们可以用组合的方式,用抽象类和接口,可以有几十种不同的实现。
为什么要面向接口编程
如果我们面向继承编程,会产生什么样的后果呢。。。
父类抽离出来共有的方法,子类去继承,子类需要知道父类都有什么方法,如果重写的话,还要看看会不会对其他的方法产生影响。
面向接口(协议)编程,我们只需要去实现,各个实现类之间没有关系。能让用户只关心抽象数据类型的api接口而无视其他的具体实现。
我们在外层设计一个callback,内部实现响应(例如:下载的进度更新),进行反馈,通知外部进行下一步操作,外部不知道过程,相当于黑盒子。但对于继承,外层知道实现的方法。
当出现问题的时候,继承这种情况锅在外部,面向接口这种情况锅就在内部里面。