关于面向对象的编程的感悟
面向对象编程
4大特性
继承,多态,封装,抽象
原则
开闭原则 : 对扩展开放,对修改关闭。
依赖倒装 :高层模块不应该依赖底层模块,它们都应该依赖抽象;抽象不应该依赖细节,细节应该依赖于抽象。
里氏替换原则:任何一个子类都可以替换父类
特点
维护性,扩展性,复用性,灵活性大大提高
好处
所有的好处都源自4大特性。
通过抽象,我们编程实现了大大的解耦。比如说,如果你必须要泡刘亦菲,泡不刘亦菲你不能结婚生子。此时你和刘亦菲就紧紧的耦合了在一起。假设你泡到了刘亦菲,此时你们结婚,在户口本上写上刘亦菲的名字。如果哪天你对刘亦菲失去了兴趣,又想甩了她,此时你就不得不在户口本上改写成另外一个女人的名字。(违背了开闭原则,相当于改写了程序你所依赖的类)。
如果你没必须要泡到刘亦菲,泡一个女人就行(想当于对刘亦菲的抽象)。此时你就就实现了对刘亦菲的解耦。随便什么女人都Ok,在户口本写上女人两个大字即可(此时程序依赖的只是女人的抽象,任何一个女人都是女人,is a 的关系)。即时你遭三暮四,女人随便换,都不影响,因为她们都是女人(此时程序都不用修改,通过多态完美的实现)。
面向过程编程因为缺少这些特性,在需求更换的时候就很恶心,通过日夜不停的反复修改代码,来实现对需求的满足。
同时,面向过程编程充斥了太多的if --else,在面向对象中完全可以通过多态解决。
if else 相当于在不同的情况下对问题的不同处理方式。利用面向对象,我们提取一个抽象类,继承这个抽象类,每个具体类相当于对不同情况下的对同一问题的不同处理方案。通过传入的条件,利用简单工厂生产不同的实体类传入解决问题。这样,在以后新需求,扩展时,只需要改动工厂类(通过spring,其实工厂类也不需要改,只需要配置参数的时候添加一个条件而已 ),增加一个处理类即可,不需要对客户端代码进行修改。这样完全实现的维护性,扩展性。
本博客谨代表个人观点。

浙公网安备 33010602011771号