最近,围绕着模式的讨论日嚣尘上,人们对模式的混淆.惊惶与以讹传讹已经不是一点半点.这也从一个侧面反映出对于主流软件开发者来说,模式是一个多么新鲜的领域——尽管严格说来,它并不是一个新的领域.同时,模式也是一个飞速发展的领域,留下了大片的空白.而且,没错,我们这些模式的支持者也应该受批评,因为我们没有把自己的知识完完全全的教给别人.尽管我们这样想过,但是却没有这样做[bmr+96, coplien96, cs95, gof95, mrb98, vck96]. 【程序编程相关:JAVA规则——开发篇】
关于javafan.net/special/designpattern/index.jsp" target="_blank">设计模式,下面有十种错误的观点——很多都是很流行的观点.且看vlissides先生如何拨开这些迷雾. 【推荐阅读:Tutorial for buildin】
这几年以来,我听到过许多人谈论模式.把听到的这些东西整理一下,对模式的误解大概有三类:对于“模式是什么”的误解,对于“模式可以做什么”的误解,以及对于支持模式的人群的误解.我的“十大误解”都落入这三类之中,所以我就把这些误解都组织起来.首先,我们来看看关于“模式是什么”的误解. 【扩展信息:java 面试中的一道编写一个截取字符串】
因此,我觉得自己有责任来纠正一些模式方面越来越夸张的误解——我常常听到的那些误解都足以形成自己的模式了.甚至连我也曾经想以模式来组成自己的软件结构……后来我才明白:“把所有的东西都变成模式”,这种想法本身就是错误的!总之,请记住,这篇文章不是在给模式社群的人们看的.我想,绝大多数的模式专家都会同意:下面这些都是很常见的误解.但是他们也许不会同意我消除这些误解的方式.
误解之一:“模式是某种场景下某个问题的解决方案”
这个定义来自于christopher alexander[ais+77],所以如果把它称为“误解”,也许有人会把我目为异端.但是下面这个简单的反例就能让你看清它的缺点:
问题:我获奖的奖券就快过期了,我怎样拿到奖金?场景:离截止时间只有一小时,可是我家的小狗把奖券给吞了.解决方案:把狗开膛破肚,掏出奖券,然后飞奔到最近的兑奖地点.
这是“某种场景下某个问题的解决方案”,但它不是模式.还缺了什么?至少缺三样东西:
1. 可重复性.解决方案应该对应于外部的场景.2. 可传授性.一个解决方案应该可以移植到问题的不同情况上.... 下一页