面向对象思想
感悟:要想成为合格工程师,必须拥有面向对象思维
初级工程师和高级工程师以及架构师最大的区别就是等级越高看问题的角度就不一样,犹如初级工程师写系统完全就是面向过程 if else写满整个类,而且类之间的耦合性很大,不好维护,牵一发而动全身,扩展性很不好。他们站在角度就是能完成功能需求,但是高级工程师以及架构师站在项目角度,考虑未来需求变化和如何做到可维护性、可复用、可扩展(当然这里从代码层面,还有就是从系统架构层面考虑后面单设栏目进行分析)。
面向对象特性
- 封装
- 继承
- 多态
封装
将独立模块(可能是独个方法或多个类,甚至一个系统)逻辑封装起来,便于复用,维护。
尽量让依赖方知道的越少越好,将复杂逻辑封装在一个类中的方法中或模块中。 例如根据需要传入对应的参数,然后获取相应的结果,获取结果过程我们并不care,我只想要结果是什么,复杂的逻辑封装起来就好。
继承
将公共逻辑(包括属性、方法)放在一个父类中,然后不同的子类继承父类重写其方法,因此有不同的表现。依赖方只需要拿到抽象父类,并不需要知道具体实现类,降低模块之间的耦合性。
出现父类的地方一定可以被其他子类替换掉,这个就是后面讲到的面向对象四大设计原则中的里氏替换原则