里式替换原则:
请看我上一博文的单一职责原则的实例代码,其实在单一职责原则中我们已经使用了里式替换原则。
里式替换原则:所有引用父类对象的地方,都可以使用其子类类型代替。看单一职责原则的示例代码不难发现,正是如此,也可以说里式替换原则是我们的最低层的,用了里式替换原则,我们就会和单一职责原则扯上关系,还有后面提到的依赖倒置原则和开放封闭原则。我们后面在实例代码中慢慢体会。
接口隔离原则:
遵循三句话:
- 客户端不应该依赖它不需要的接口
- 一个类对另外一个类的依赖、应该建立在最小的接口上
- 接口尽量细分,不要再一个接口中放很多方法
在上述代码中,我们定义一个成绩接口,我们的老师和学生类都继承于这个接口,我们老师需要添加修改删除成绩,可是我们的学生只能查询、打印成绩,这样子的设计就是错误的,违反了我们接口隔离原则。因为我们学生客户端依赖它不需要的接口
我们可以进行优化,将成绩接口划分为学生成绩接口和老师成绩接口。
这样我们把它拆分成两个接口,我们的学生和老师类分别继承于这两个接口,这就实现了我们的接口隔离原则,我们可以回过头结合代码去看接口隔离原则遵循的三句话。
接口隔离原则和单一职责原则的关系:
- 单一职责原则:我们的类只干一件事,影响我们类变化的原因只有添加功能,为了高内聚(模块内部元素的相似程度尽量高)
- 接口隔离原则:为了低耦合(模块之间的依赖程度要低)可以细读遵循三句话的第二句。
他们的区别:拿我们现实生活中的举例说明:就好比我们的公司的各个部门,开发部。财务部。行政部门。这对应的就是接口隔离原则。我们的开发部专门来写代码,开发产品。财务部专门管理财务。这就是我们的单一职责原则,如果我们的开发既要写代码还有管理财务,这不就是低内聚了吗。