在今天,读书有时是件“麻烦”事。它需要你付出时间,付出精力,还要付出一份心境。--仅以《大话设计模式》来祭奠那逝去的……
大鸟:“所有编程初学者都会有这样的问题就直觉的用计算机能够理解的逻辑来描述和表达待解决的问题及具体的求解过程。这其实是用计算机的方式去思考,比如计算器这个程序,先要求输入两个数和运算符号,然后根据运算符号来判断如何运算,得到结果,这本身没有错,但这样的思维却使我们的程序只为满足当前的需求,程序不容易维护、不容易扩展,更不容易复用,从而达不到高质量代码的要求。”
1.活字印刷,面向对象
“话说三国时期,曹操带领百万大军攻打东吴,大军在长江赤壁驻扎,军船连城一片,眼看要灭掉东吴,统一天下,曹操大悦,于是大宴众文武,在酒席间,曹操诗兴大发,不觉吟道:‘喝酒唱歌,人生真爽,……’,众文武齐呼:‘丞相好诗!’,于是已臣子速命印刷工匠刻板印刷,以便流传天下。”
“第二天,样张出来后,曹操一看不妥:‘喝与唱,此话过俗,应改为对酒当歌较好!’,此臣就命工匠重新来过。工匠眼看连夜刻版之工,彻底白费,心中叫苦不迭,只得照办。”
“第三天,样张再次出来后,曹操细细一品,觉得不妥:‘人生真爽,太过直接,应改为人生几何才有意境!’,于是此臣再命工匠重新来过。工匠晕倒……”
“小菜你说,这里问题出在哪里?”大鸟问道。
小菜说:“是不是因为三国时期活字印刷还未发明,所以要改字的时候,就必须整个刻板全部重新刻。”
大鸟:“说的好!如果有了活字印刷,则只需要改四个字就可,其余工作都未白做,岂不妙哉。”
“第一,要改只需改要改之字,此为可维护;第二,这些字并不是这次用完就废弃了,完全可以在以后的印刷中重用,此为可复用;第三,此诗若要加字,只需另刻字加入即可,此为可扩展;第四,字的排列可能是横排可能是竖排,此时只需要将活字移动即可满足需求,此为灵活性好!”
2.面向对象的好处
学习了面向对象的分析设计编程思想,开始考虑通过封装、继承和多态把程序的耦合度降低,传统印刷术的问题就在于所有的字都刻在同一版面上造成耦合度太高所致,开始使用设计模式使得程序更加灵活,容易修改,并且易复用。