关于面向对象的编程的感悟

面向对象编程

4大特性

  继承,多态,封装,抽象

原则

  开闭原则 : 对扩展开放,对修改关闭。

    依赖倒装  :高层模块不应该依赖底层模块,它们都应该依赖抽象;抽象不应该依赖细节,细节应该依赖于抽象。

  里氏替换原则:任何一个子类都可以替换父类

特点

  维护性,扩展性,复用性,灵活性大大提高

好处

  所有的好处都源自4大特性。

  通过抽象,我们编程实现了大大的解耦。比如说,如果你必须要泡刘亦菲,泡不刘亦菲你不能结婚生子。此时你和刘亦菲就紧紧的耦合了在一起。假设你泡到了刘亦菲,此时你们结婚,在户口本上写上刘亦菲的名字。如果哪天你对刘亦菲失去了兴趣,又想甩了她,此时你就不得不在户口本上改写成另外一个女人的名字。(违背了开闭原则,相当于改写了程序你所依赖的类)。

  如果你没必须要泡到刘亦菲,泡一个女人就行(想当于对刘亦菲的抽象)。此时你就就实现了对刘亦菲的解耦。随便什么女人都Ok,在户口本写上女人两个大字即可(此时程序依赖的只是女人的抽象,任何一个女人都是女人,is a 的关系)。即时你遭三暮四,女人随便换,都不影响,因为她们都是女人(此时程序都不用修改,通过多态完美的实现)。

  面向过程编程因为缺少这些特性,在需求更换的时候就很恶心,通过日夜不停的反复修改代码,来实现对需求的满足。

  同时,面向过程编程充斥了太多的if --else,在面向对象中完全可以通过多态解决。

  if else 相当于在不同的情况下对问题的不同处理方式。利用面向对象,我们提取一个抽象类,继承这个抽象类,每个具体类相当于对不同情况下的对同一问题的不同处理方案。通过传入的条件,利用简单工厂生产不同的实体类传入解决问题。这样,在以后新需求,扩展时,只需要改动工厂类(通过spring,其实工厂类也不需要改,只需要配置参数的时候添加一个条件而已 ),增加一个处理类即可,不需要对客户端代码进行修改。这样完全实现的维护性,扩展性。

本博客谨代表个人观点。

  

 

posted @ 2017-07-07 17:15  wupaJava  阅读(199)  评论(1)    收藏  举报