xuyingxiao的个人博客分享 http://blog.sciencenet.cn/u/xuyingxiao

博文

武松的十八碗酒与工厂模式

已有 4218 次阅读 2012-6-8 20:19 |个人分类:教学|系统分类:教学心得|关键词:设计模式,,武松,景阳冈| 武松, 设计模式, 景阳冈

剪贴板20122008201619644.jpg

 麦库截图20121108115423141.jpg

 

 

 

 武松来到号称“三碗不过冈”的酒家喝了十八碗酒,过景阳冈,上演了一出武松打虎的大戏。

 

 

这十八碗酒是他自己酿造的么?武松乃一介武夫,如果既要学武又要学酿酒,未免要做的事情太多、而且是不相干的事情,这叫“内聚度”太低,事情肯定做不好。

 

武松是个高内聚的武松,他没有自己去酿酒,而是对店家说:“主人家,快把酒来吃。”用现在的话来说就是:“老板,拿酒来!”于是主人家把酒端来。

 

这时,一位软件工程师不禁泪流满面:工厂模式诞生了!酿酒的职责被剥离出来给店家,武松只关注练武,店家只关注像酿酒、腌肉之类的食物制造,武松要 喝酒就找店家要就行了。大家关注点分离,每个人内聚度都很高,就可以把各自的事情做到极致。后来,几经改朝换代,这种制造东西店家被称为工厂,需要什么东 西,直接找工厂要就行了,这个模式称为工厂模式。

 

再看武松,他说的是“拿酒来”,这句话包含了高超的技巧:武松用了一个抽象的“酒”字。对他来说,管他是米酒、高粱酒,只要是酒就行。运用抽象词汇的好处是,武松可以以不变应万变,以后打虎之前要喝酒时都固定说这一句:“拿酒来”就行了,词都不用换。

 

以后店家则可以不断提高服务水平,当听到一句“拿酒来”时,可以根据不同的天气提供不同的酒,还可以给酒换上不同的包装。

 

这是最简单的工厂模式。

 

再看《水浒传》这一回,喝酒其实还不这么简单。武松一句“拿酒来”,小说里说“只见店主人把三只碗、一双箸、一碟热菜,放在武松面前。满满筛一碗酒来。”

 

原来我们古人早就把工厂做得很复杂了——喝酒得三只碗、一双箸、一碟热菜配在一起。

 

这店家也不简单,竟然也知道运用抽象的概念。三只碗、一双箸、一碟热菜和酒配成一套,这碗没说是青瓷碗还是木碗,这筷子没有说是象牙筷、竹筷还是木 筷…… 这就提供了很强的灵活性,将具体的碗、具体的筷子、具体的热菜和具体的酒根据情况进行组合,可以产生多少产品系列!这里,碗、筷、热菜等都是抽象 产品,最后配出来的放到武松的桌子上的才是真正的具体的产品。

 

再复杂一点,这个碗、筷也不是这个店家生产的,店家这个工厂本身也要进一步提高内聚度,他向筷子厂要筷子、向造碗厂要碗就行了。再复杂点,筷子厂也可以是个抽象的工厂,具体化时“三碗不过冈”的酒家可以找五道口象牙筷子厂要象牙筷子、找提篮桥一次性筷子厂要一次性筷子……

 

这个工厂够复杂了,后续的故事是:“三碗不过冈”的酒家做大做强了,形成一个非常复杂的子系统。武松再也无法直接看到店主人了,酒家有个店小二,武 松有啥事都直接找店小二就行了。至于酒店里面再怎么复杂、怎么调整,对武松都没有影响。这个店小二就是酒店的门面,软件工程师把它叫做门面模式。此时,这 个店家中门面模式和工厂模式交织在一起了。

 

还有更多的软件设计模式,设计模式领域著名的四人帮总结了23种设计模式,有书籍说面向对象领域至少有250种现存的模式。欲知后事如何,且等俺饭碗稳定再作分解。

 

(所有图片搜集自网络)

 

 


麦库截图20121108115509413.jpg

麦库截图20121108115555577.jpg

 

 



http://blog.sciencenet.cn/blog-504160-580088.html

上一篇:美国的空气比美国的人权好
下一篇:让我噎着的故事(5):耶稣钉十字架是安排好的既定动作

8 曹聪 袁贤讯 吕喆 陆俊茜 鲍永利 徐建良 武夷山 姚羽

该博文允许注册用户评论 请点击登录 评论 (2 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2020-2-25 11:45

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部