浅谈面向对象编程的好处

浅谈一下面对对象编程的好处

举一个例子:印刷术和活字印刷术的对比。

场景: 假设古时候,当官府衙门需要张贴出一篇檄文时,需要去找工匠去把檄文上需要的字都雕刻到石刻上去,然后把石刻当作模板印出文字来。当工匠辛辛苦苦将文字都在石刻上雕刻好,突然官府又说檄文上的文字显得不够官方,不够威严,需要改动一两处小的文字。于是工匠又只能再取一个石刻,然后把文字修改后的檄文内容往石刻上雕刻。如此反复了几次,终于满足了官府的要求了。 可是几天后,官府又要张贴新的另一则檄文,但是檄文大部分开头和结尾的内容都是譬如"今某某地方匪患猖獗" ,"踊跃参与者重重有赏"等等和上一篇檄文相同的内容。但是工匠却需要做许多重复的工作。工匠实在是太苦逼了,就和现在不懂得面向对象编程的程序猿们一样苦逼。

不过后来出现了活字印刷术,工匠们再也不用像以前那样很辛苦了,每个文字都刻在一个小石头块上,需要组成新的檄文时只需要把石块的顺序改一下,如果石块上没有这个文字,就只需要再雕刻这一个文字就可以了,不需要全部重新开始雕刻。工匠们从此就YY不断了,再也不用担心官府的隔三差五的改变了檄文内容了。

思考:

当一篇檄文需要更改时只需要更改其中需要更改的部分,而不需要全部推倒重来,这就是面向对象的好处之一 **可维护**

石刻上每雕刻的一个字都可以重复使用,而不是每次每则檄文都需要再重新雕刻每个字,这就是面向对象的好处之一 **可复用**

当檄文中出现新的文字时,工匠仅仅需要雕刻这个文字,再把它加到印刷版块上面去就可以了,这就是面向对象的好处之一 **可扩展**

此外如果同样的檄文需要横着写或者竖着写,只需要移动字块就可以了,这就是面向对象的好处之一 **灵活性好**


总体而言,个人觉得面向对象思想更像是一种思维的转化模式,是哲学引领着编程的过程的。我们在做工程的时候如果不想做许多重复冗余的事情,在做的起初就最好能够以面对对象的思想来规划工程。在面向对象编程中,我们开始通过封装,继承,多态把程序的耦合度降低,使用设计模式让程序更加灵活,容易修改,并且容易复用。如果你评价一个程序是否写的好,你可以从可维护性,可复用性,可扩展性,和灵活性,以及程序之间的耦合关系来考量一下。我个人觉得所有的设计模式最终的目的都是为了让程序拥有这几个特性,可维护性,可复用性,可扩展性,灵活性和低耦合(低耦合其实可以去掉,一般可复用的程序都差不多是低耦合的模块了),这几个目的应该是我们写出优美代码的目的和出发点。由于个人经验尚浅,只能说一点自己的浅见,来日若有新的感悟,再添上来。

你可能感兴趣的:(设计模式,面向对象编程)