武侠中的方法学--GOF设计模式学习有感

一、 缘起
    最近在听李建忠老师的面向对象设计模式的讲座,比较有收获。 系列讲座听到后面,感觉各种模式都很像了。
其实设计模式也是一种方法学,是为了提高软件应对变化的能力的一种方法学,这让我想起了武侠中的各种武功和武林高手。

二、 武侠与设计模式的方法学比较
     小时候喜欢武侠的兄弟们一定都很向往那些绝世神功,一阳指、凌波微步、降龙十八掌。。。还有那些武林秘籍,玉女心经、九阳九阴。。。 
虽然有一些夸张虚构的成分,但是这里面反映出的方法学,是值得讨论一下的。

    这些神功秘籍的主要目的(也许有点狭隘)都是为了提高攻击力,增强防守力,以便能在打斗中击败对方。因为击败对方的方法很多,所以有了各式各样的神功。
比如 一阳指主要用于远程攻击,凌波微步用于避开敌人的攻击,降龙十八掌用于正面强攻。 就像GOF中的各种模式,大部分都是用解耦的方式来隔离变化,比如
Mediator解耦系统内多个对象的关联、Iterator解耦对象与可迭代集合对象的关联。

    开始学习武功的时候,都是从一招一式开始(当然有的是从内功修炼开始),其实就是制敌的一个方法(这里考虑的敌人都是按套路出招的),然后学的招式
多了以后,总结体会出规律,最后忘掉具体招式,练成神功。就像张三丰教张无忌太极拳时说的一句话 “当你忘掉了所有的招式,你就练成了太极拳”,虽然有点极端,
但是有一定的道理。
    学习设计模式,也应该从GOF23种设计模式开始,由简至繁,学习各种模式,同时慢慢的体会每种模式的实现方式及原理,等你学到一定的程度就会发现,其实模式的
原理都是一样的,然后你就可以逐渐忘掉具体的模式,尝试用这种原理去解决具体的问题。 当你忘掉了所有的具体模式,你就学会了设计模式。^_^...

三、 总结
    学习具体的每一种设计模式,主要目的不是记住这种模式,而是理解该模式解决问题的原理,逐渐加深自己的解决问题的思路。所以学习中的实际演练还是很重要的,
只学不用效果是不好的。
    最后祝大家学有所成!

ps.
实际写的时候才发现,真不是很简单的。遣词造句,逻辑编排都不是很容易的。
大家多担待吧。
还是看和写太少了,得努力。

你可能感兴趣的:(设计模式)