麻里麻里哄,还原基本法

事实上这3篇文章 我已经在javaeye上发过了.得到了一些意见和建议.实质上我在1年多前就在过jdon.知道jdon是一个什么样的群体,所以我觉得这3篇文章也应该发到jdon里面来,各位都是设计的专家,所以请点评我的文章,一共3篇 我都放到一个帖子发布了..由于本人的文笔不是很好,所以不知道各位能不能感受到我的意思.而我也肯定是有所感悟才写出这样的文章..


第一篇 欲习道,则先忘道

引言:看过"倚天剑与屠龙刀"(不是连续剧,电影,李连杰演的那个)都知道,在后面张无忌和赵敏的手下玄冥二老PK的时候,因赵敏心思缜密又怕自己丢脸, 所以要张无忌不能使用乾坤大挪移与九阳真经,可张无忌除了这两种功夫以外,并不会其他的功夫,这时候,武当的老大"张三丰"吼吼的现身,并且当场教授张无忌太极拳,张三丰打了一套之后问"你记住了没?",张说:"记住了","三丰"老大又说:"把刚才教的拳法,套路都忘记,你就学会太极拳了".

本来想起标题为:太极模式,但是又怕误会成为又是一种新型的设计模式..所以暂且就这个吧..


回到正题:
为什么张三丰教了张无忌拳法,套路后又要让他忘记,并且声称只要忘记就可以学会太极拳了,从这里不难看出张三丰教他的其实是太极拳的特点,思想,能够以柔克刚的思想,方式
对应到软件设计上来,很多的java书,以及网上的电子文档,包括blog,bbs都经常谈论到设计模式,如,代理模式,工厂模式等,事实上这些东西只是模式的实现,各类的设计模式把他抽象成为模式才是我们今天要讨论的东西.
一个好的系统,好的设计模式,一定是遵守"开-闭"原则,具有可扩展性,可插入性的,如前几篇文章中就举例说明了静态工厂模式,工厂方法模式,抽象工厂方法模式,如何把这些模式变成自己的模式呢?那就是将这些模式抽象出来,就如一个系统中存在很多重复的方法,需要不同实现的方法,我们会重新定义一个接口或者抽象类一样,如果我们把这些模式抽象成为一个"模式接口",那我们"模式接口"里面放置的方法就一定包括"开-闭"原则这个接口,而这个"开- 闭"接口的方法一定包括"可插入性,可扩展性",说到这里,相信刚才的问题就一定能够得出答案."如何把这些模式变成自己的模式?",答案就是使用你自己的方式实现这个"开-闭"原则接口,那就是一个好的设计模式.

像张三丰教授张无忌太极拳一样,我们要学的根本不是所谓"工厂模式,代理模式",我们要学的是如何编写实现了"开-闭"这个接口的类,这才是模式之道,忘记拿23个设计模式吧,忘记它们你就学会模式了
所以欲习道,则先忘道


第二篇: 以截拳道看"太极模式"
今天讲截拳道并不是来学武功的,而是来学习它的武学理念,恰巧与我所定义的"太极模式"的思想不谋而合,都因为是从"道家思想"中提炼出来的.

截拳道的创始人正式中国武学家,哲学家李小龙,他在创立截拳道时是以咏春拳作为拳法基础,并学习各派武术,利用"道家理论"和叶问的"剪枝蔓,立主脑"的思想所建立.
截:简单的说就是防守
拳:就是无形的攻击
道:则是控制防和攻的思想

利用最简单防守和无形的攻击直截了当的打败对方就是截拳道武学的核心思想

李小龙认为,中国武学太多而杂,各门各派的武功各有各的长处也同样有短处,所以以PK来学习各种武学,然后"剪枝蔓,立主脑",就是说,摒弃各种繁杂的动作以及招式直接利用优点攻击对方.

再来看看"太极模式",在设计模式中,同样有很多种模式,如代理,适配器,工厂等等一系列的模式,各有各的优点和针对的地方,好的设计模式都有一个共同点:一定是遵守了"开-闭"原则.就如截拳道思想一样,所有的门派里面一定包含了攻击和防守,截拳道摒弃了各种繁杂的动作,并且还原了基本武学的本质,就是攻击和防守,设计模式中同样也体现了这一点,"太极模式"则是忘掉所有的设计模式,还原模式的本质,就是"模式".用2个字来形容它就是--抽象,各种门派的武学都是攻击和防守的实现,各种设计模式都只是"模式"的实现,所以我们要将设计模式还原,找到设计模式的本质并且变成自己的模式,怎么做?用你的武学实现"攻击和防守",用你的思想来实现"太极模式".


第三篇: 麻里麻里哄,还原基本法

想到这个标题的时候却有点悲痛,这句话是曾经在某个电影里面,张国荣大哥为了女色采用的不轨行为魔术...纪念张国荣大哥,,请跟我一起默哀1分钟...

这是对于上两片文章"欲习道,则先忘道","以截拳道看'太极模式'"的一个自我总结,

事实上这两篇文章的实体内容其实是让我们认识到要学习抽象思想,化有形为无形,即可融会贯通,运用自如,不再受各种模式的牵绊,不必再为了用设计模式而用设计模式.

道可道,非常道,"道"是在道家理论中最至高无上的东西,而这个"道"不同于普通的"道",所以是非常道,它代表了世间万物的一切规则与定律,遵循这个规则即可通过一切方法达到你想要的目标.与截拳道中的"道"是一个道理.武学如此,建筑学如此,软件设计也如此,世间万物同样如此,而这一切来自于"还原基本",只有还原基本才能够找到真正的"道",才能从基本扩展属于你自己的"道".


我不知道哲学是所谓什么,但我看了墨子,老子这些古人哲学家的一些文章后,也确实有一点茅塞顿开,突然发现眼前是多么的光鲜明亮,而突然又感觉到这世界真是奇妙,鸟语花香、人来人往、日生月落,一切的一切是多么"巧合",它们遵循"道",利用"道",才得以自由发展,变成自己,忽想:人类的出现是不是最大"道"的体现?


"数据库已死,OO为王",在很久以前我不理解这是个什么意思,直到我有所感悟并写出这几篇文章后,能够感受到这句话后面的诸多含义!!


请给予评价,让我再继续成长!!!
[该贴被admin于2009-04-16 08:58修改过]

多多思考 总有所得。

banq老师 您说的这个"得",我"得"对了吗?

当然得了,找到门了,至于对不对,无法擅自评论,只是程度高低而已。

开-闭 原则其实就是我说的不变-变化原则,找出不变,固化,通过多态特性释放变化,将开的敞口对付变化,这是应付变化的根本之道。

哈哈..以不变应万变 这么一句经常说的话..居然是科学设计中对变化的根本解决之道...

确实是这样的,我现在更加确定,我们要学的不是"XXX模式",而是要学习实现"模式"的这个类

我也觉得JAVA有点像程序界里的九阳神工,学完了学什么都特别的快,这主要是因为JAVA注重的是思想的延伸和整体宏观的全局性把握,而编写代码最怕的就是缺乏思想,单纯的体力劳动的人无法成为一个合格的JAVA程序员,可悲的是花了2年时间我才领悟。做了整整2年的民工。楼主的思想我非常赞成,如果一个框架的核心是各种接口协同工作,那样就意味着这个框架接入的实现类不同,那么整个框架的实现就完全发生了变化,我一直主张这种思想。设计模式确实和JAVA结合的非常好。代理,工厂等等等等灵活运用的话,那样做出来的东西才是优美的。希望还在体力劳动中苦苦挣扎的兄弟早日走出苦闷,没思想的编码是最可怕的

文章本天成!妙笔偶得之!
首先说楼主,文章的确写的不错!对OO的理解亦是不凡,希望你能抱着谦虚的态度,成为一代宗师!
然后就是楼上,我觉得挺可怜的,说实话,编程两年,才有了OO的思想!不过,有所认识,能及时归正,也是好的!说句不好听的话!如果你再不归到正路上来!对外行的人来说可能是个白领,但是在内部人看来,你就是民工!引用别人的一句话:
不同的汗水!
民工 可遇见的风险 别人能帮
架构师 不可遇见的风险 无人能帮
唯一不变的是变化本身!

看来是入道了,呵呵。
可惜我还在苦苦寻觅啊。