换个角度理解之银弹

《换个角度理解之设计模式》的草稿已经放了一个多月了,始终感觉缺少点什么。最近因为工作需要在读Shiro,Thymeleaf源码,而在阅读过程中时不时地会回想起还在做.NET的时候看过的 《程序员的自我修养—链接、装载与库》一书的这样一句话——“软件开发领域的银弹——引入中间层”

说句题外话,这本书当初依然是听取了很多人的推荐。但买回来之后才发现是讲C艹的。得益于当时的工资低但工作轻松,所以还是抽空看了一些。

1. 来源

下面这张图是我刚刚专门从网上截取来的。

《程序员的自我修养—链接、装载与库》P8

2. 解读

我还是从两个核心概念出发尝试阐述下对这句话的理解。

2.1 推迟作决定的时机

对上面这句话的理解最直接的当然就是推迟作决定的时机。中间层的引入最明显的就是再次将必须做出决定的时机后延。时机的后延也就意味着我们为应对变动留出了更多的空间,系统也因此变得更加牢固。

但是请记住,这种方式并不是完美无瑕的。引入中间层的一大弊端就是增加了理解上的难度,这也是考验架构师的一个重要指标——哪些才是必要的中间层?

本人曾经总结过这样一句话: “真正做出决定的时间点和假装做出决定的时间点之间的间隔越大,系统将越灵活,越牢固。大部分系统不稳定性的重要原因之一正是作决定的时机太早,导致之后作决定时被之前作下的决定所束缚,进而处处受制”

2.2 知道自己不该知道什么

中间层引入之后,对于中间层之上的调用者而言,它就不应该去关心中间层之下的相关细节,它只需要遵守中间层的契约,来获取自己想要的结果。

看了上面这段语言,是否感觉这个中间层的解释很像接口。没错,接口就是中间层的一种形式

所以在你引入了中间层之后,

  1. 当你处在中间层之上时,一定要谨记自己该知道的,以及不该知道的。尤其是后者,你作出的假设越少,系统的灵活性越大。
  2. 而当你位于中间层之下时,而是谨记不要去关注中间层之外的其他问题。这也符合很多前辈所教育我们的“不要对软件的其它部分做出任何假设”,"编写羞涩的代码"。

3. 总结

虽然是做.NET的时候就看到了这个言论,但真正有所感悟的则是在转入Java,看了这么多的源码之后。

回头想想曾经看过的那些优秀源码,对于它们设计中的精密之处,彼此之间似乎越来越像了!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,815评论 25 707
  • 干货分享:用运营思维树立个人品牌 第一弹 不用800万的学区房,不用环游世界的毒鸡汤,每个人都可以成为人生赢家。大...
    张老师Jess阅读 527评论 15 7
  • 一根鱼线掏空我心一颗颗将我穿引最后打一个结锁住我心 原以为哪一个人爱不释手便是我的主人才明了我不过一串佛物敬仰之又...
    静止空间阅读 147评论 0 2
  • 坐在回家的637路公交车上,我开始感到疲倦。 今天不是周末,不是周一,只是在这之间的,某个普通的日子。 早上离开家...
    陆不换阅读 916评论 1 2
  • 今天下午,浏览了几所同类高校的科研网,颇有收获。我们在对外宣传这部分,做得不够。 一、网页要分类清晰,亮点突出有的...
    容玲阅读 148评论 0 1