设计模式的代码敲了一遍了,原本想着再深入的学习一下的,但是又要忙着专业课的考试,不得不把设计模式先放一放。前一阶段的学习只能叫浅学习,忙完期末考试后准备进行设计模式的深学习(《关于编程的浅学习与深学习》)。
说说现在对设计模式的理解,欢迎拍砖。
什么是设计模式?就现在个人所理解的设计模式而言,它(设计模式)就是能帮助我们充分利用面向对象的思想写出更高效的代码的固定套路。
做一个比喻的话设计模式就是象棋中固定的残局。而那些工厂方法模式、外观模式、观察者模式等等就类似于双炮将,马后炮,铁门栓之类的招式。都是前人经过多年的摸索,总结、提炼出来的规律,一般情况下只要照着做(下棋当中也是一个道理)就会有比较好的效果。当然不排除自己也可以创造出一种设计模式(反类比到象棋中,就是每次都能置对方于死地的招式都可以叫做自己的招式,但是和经典的残局相信会有些差距。)
为什么要学习设计模式?如果接着上文的比喻的话就是“学象棋为什么要学习残局?”这样类比过来的话答案就再明显不过了。学习前人总结好的残局可以迅速,毫无悬念的将对手打败。不用再绞尽脑汁的去想一个套路将对手干掉。
学习前人总结好的设计模式也一样,可以迅速、准确的写出高效的代码。为以后的软件的维护、增加功能做好铺垫。同样不用自己冥思苦想怎样才能做到维护的方便,扩展的良好。只要用对了前人的模式那都将不是问题。
怎样学习设计模式?接着类比,“学象棋怎样才能学习好残局?”学过下棋的人都有过这个经历,自己见识过很多种残局后就在开局拼命的给自己营造“熟悉”的残局,希望最终能用上这个招式将对手干掉。但是结果往往以自己的失败而告终。这就是说固定的招式固然可以轻而易举的将对少干掉,但是残局绝不是在开始博弈的时候就决定的,而是双方僵持到最终后自然而然的就用上了固定的招式。
那么“怎样才能融会贯通各种残局?”答案就是多去和别人切磋,每次都努力的去用上固定的残局,假以时日必将成为高手。
类比到设计模式也是一样,学了很多设计模式后恨不得在自己的一个程序中全用一遍。个人认为这几乎不可能,能用一两个就非常不错了。大部分的代码就像下棋中的平常步数一样,普通的不能再普通。软件整体的框架出来后,通过多次重构发现这里可以用上这个设计模式,那里可以用上那个设计模式,这就很不错了!
怎样才能掌握各种设计模式?答案类似:多写代码,以后在写代码的时候努力用上设计模式就可以了。
冰冻三尺,非一日之寒;为山九仞,岂一日之功?