读了近一年面向对象和设计模式有关的书,偶有小感。
现在互联网越来越发达了,参加编程的人员也越来越多了。像我这种一直是在小厂混迹的编程人员估计不在少数,感觉很多初级或者中级的程序猿写了多年的代码依然不太清楚面向对象的意义或者说设计模式的存在。觉得只要能完成业务逻辑就完事了。
面向对象的意义在于——让编程变得更生动。
在编程当中既要有结构化的编程,也要有对象化的编程。对象化的编程能使某些问题得到抽象的表现,更利于表达问题。面向对象就像炒菜时的调味剂一样,很少,但是很有用。要想做成很好吃的菜用一些调味剂获取是最快的途径,当然了也可以不用做出好吃的菜,但是过程比较复杂,就像结构化编程一样。
1
它是什么
面向对象(Object Oriented,OO)是软件开发方法。它的基本特征是:封装、继承、多态。所有使用面向对象编程都是围绕着这些特征去使用的。
2
为什么需要它
对于面向过程有深入理解的人都知道,一个方法做一件事情,这样能确保别人的调用是可以正确执行的。但是在一步一步的调用过程中,如果中间某个方法变化了,影响的是一条或多条方法链,最终导致了不知名的后果。并且在过程中总是有一些相似的代码,相似代码的出现往往意味着坏代码的味道——《重构改善既有代码的设计》。
而合理的面向对象能改善这些。
3
什么时候需要它
记得刚刚开始读有关设计模式的时候,回去上班写代码,发现我一句代码都写不动了。因为在我写任何代码的时候都在想,如果我这句代码这样写了,万一它后面有变化了怎么办?一想到这个问题,我一句代码都写不下去了,这种状态大概持续了一段时间,最后代码还是要写的,我能怎么办?只能选择暂时忘记它。
一直到后来我读到一句话:在我们编写代码之初,假设变化不会发生。当变化发生时,我们就创建抽象来隔离以后发生的变化——《大话设计模式》。这句话或许不能很完整的概括面向对象的全部,但是只有这样才不会在面向对象之中迷失。
现在回过头来想一想,感觉自己的过程就像网上流行的有关初级、中级、高级程序员大家都在写hello world的文章一样。初级的,按照现在的需求直接输出它。中级的,各种运用设计模式,面向对象,写了一大堆代码,考虑其中有可能变化的地方,抽象它们用来应对以后莫须有的变化。高级的,也是直接输出它,因为高级的已经清楚了解这个需求,对于这个需求暂时还不需要提炼各种抽象,等变化发生了再来抽象也不晚。
4
使用它有什么好处
1.合理的运用可以提升代码层级的阅读感;
2.减少一些重复的代码;
3.因为对象都职权分明,所以在代码出错的时候可以较快的定位到问题;
4.易于扩展同类对象。
如果以上都不满足,那么请忘记它吧。它可以使用,但是不要迷信它。面向对象应用的越深,代码的复杂度就会越高,阅读起来也会不方便,我并不是面向对象的鼓吹者。
后
续
后续会写一些我经常使用的设计模式,并且是有具体的例子的。参照大话设计模式的结构介绍。但是例子可能会更加的细致,并且是在工作之中用到的。不会像网上介绍的设计模式一样,关键的方法就是一个输出,因为在实际的使用过程中会有很多各种各样的问题,比如参数,比如调用的地方。
第一次按照自己的意愿去认真的写一篇文章,写作过程中一定还有很多不好的地方,希望可以得到读者更多好的建议,虚心接受 。
——xiaoxiaoyu
领取专属 10元无门槛券
私享最新 技术干货