引言:
1、为什么抽象工厂中的抽象工厂要用接口?
2、抽象类和接口之间存在什么区别?
3、继承和实现之间的耦合关系大小?为什么?
从问题的深入,
我们来反过来解决这些问题:
3问:继承和实现之间的耦合关系大小?为什么?
在UML关系图中
从上到下,他们之间的耦合关系越来越弱
为什么呢?
类继承了抽象类:子类就包含了父类所有的方法,不管他有没有真的重写(隐式继承),子类是完全可以替换父类的
PS:补充说明一下,这也正是设计模式中的里式替换原则:子类可以完全代替父类
类实现了接口:虽然一样都是必须要实现接口中的所有方法。但是相比于继承关系,接口可以实现多个,但是java中类只能继承一个。所以说如果对于拓展方面来说,可以在不需要原有接口的情况下,再让类实现一个接口即可。
对于抽象类,需要修改类中的代码。
这也就是为什么说继承之间的耦合性要比实现的强的原因。
2问抽象类和接口之间的区别?
回想之前上篇博客例子1:再看一些百科的图
1问: 根据上面的例子,也就能明白为什么抽象工厂设计模式中抽象工厂使用的是接口了:
耦合性较低
易于拓展