声明:鄙人一直学习和使用的都是c语言,所以对面向对象的理解非常浅薄,该文内容都是个人理解和观点,如有错误,欢迎大家指正
六大设计原则
里氏原则
覆盖是个垃圾特性,请尽量避免利用
子类对父类进行扩展的时候,尽量不要修改父类原有的特性
依赖倒置原则
把面向对象编程理解成面向接口编程,或者说是面向抽象类编程
当使用一个具体类的时候,就要考虑是否会对该类进行扩展,显然用抽象类和接口更易于扩展
接口隔离原则
使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口
单一全责原则
接口和类应该只负责单一职责,如果有多个职责就要进行拆分,尼古拉斯赵四说过:一次不行就两次
迪米特法原则
一个对象要保持对另一个对象最少的了解
这两种的区别是什么呢?
表面看是一样的,只是第一种多定义了一个临时变量来存放Subcompany的subemployee,但正是由于这一点,将subcompany的一个属性暴露给了company,即让company对subcompany有了更多的了解
开闭原则
对扩展开放;对修改闭合
个人学习后得出的几点总结,未定正确
1. 如果不用到多态,继承就是无用的
2. 能用接口就不要用继承,继承的坏处远大于其好处,继承会造成父类和子类的强耦合,而强耦合往往是系统失控的根本
3. 多用组合少用继承
组合和继承的区别:继承是将公共的属性放到父类,而组合是将公共的属性放到其他类