淺談Design Pattern

27 回覆
9 Like 13 Dislike
2024-07-28 21:59:42
被人神化,沒有談的價值
2024-07-28 22:23:56
很有用的
2024-07-28 22:33:42
如果要寫undo/redo.
command pattern 實走唔甩
2024-07-28 22:37:06
六年寫code 經驗話比我聽其實只要有跟足SOLID 同 CRP 就得
2024-07-28 22:40:51
其實咪姐係 Dependency inversion
以我理解Behaviour 相關既根本係design principles 黎
2024-07-28 23:04:30
too naive, we just need to know the concept is enough.
2024-07-28 23:13:46
無樓主呢啲人點會有咁多垃圾code
2024-07-28 23:40:02
對唔住LO, 樓豬寫C++, 唔係成日用到pattern
2024-07-28 23:41:01
用咩complier
2024-07-28 23:44:23
brainfuck
2024-07-28 23:47:40
BFF = backend for frontend
2024-07-29 00:01:31
complier喎唔係language喎
2024-07-29 00:34:48
design pattern通常框架已經處理好, 落地好少再要人手implement, 多數時間都係專心寫business logic
2024-07-29 12:53:00
GNU.
2024-07-29 15:28:43
凡有 ”Pattern” 一字,就有紛爭,有紛爭就有恩怨, 有恩怨就有江湖


。。。 。。。


[ "Pattern" 就係江湖 ]

這是一件陳年往事,但記憶依舊鮮明,血腥味依然中人欲嘔:

A:「你呢度點解用 strategy pattern, 而唔用 visitor pattern 」

B: 「雖然我有multiple operations, 但只有一個context, 唔駛用到 visitor pattern。 」

A:「邊個話你得一個 context, 你又有 address context 又有 phone context, 兩個都support lookup operation, 已經係典型嘅 visitor pattern, 你有無考慮過睇熟本 gof 先 ?」


B: 「對唔住, gof 未必啱哂。 佢話 visitor pattern 係為咗 add future method without altering the class definition, 我已經唔同意。 太多其他pattern 可以滿足 open / closed , gof 無解釋過點解一定要用 visitor pattern。 而且 “add future method” 呢度已經開始墮入 overengineering 嘅陷阱」


A:「所以我叫你睇多次 gof, 因為你根本唔熟。 滿足 open / closed 係 visitor pattern 嘅其中一個好處, 並唔係佢嘅目的。 同樣滿足 open / closed 嘅仲有 strategy pattern, decorative pattern, adapter pattern, 但呢啲 pattern 都唔係單純為 open / closed 而生。 而且 "add future method" 係你嘅用詞,帶有貶義成分。 gof 用嘅詞語係 extensible, 亦即係 open / closed principle 入面嘅 “open” 」


B: 「其實你越講就越印證 gof 唔係啱哂。 visitor pattern 嘅真正意義唔係令你 extensible, 而係 support multiple dispatch。 呢句唔係我講,係殿堂級人物 Scott Meyers 講嘅。我哋條 team 用 java, 已經support multiple dispatch, 用 visitor pattern 係多餘」


A: 「你唔熟 gof 都算, 點解連 java 都唔熟 ? java 根本係 single dispatch。」


B: 「 contactContext.lookup("9876-5432"), contactContext 係 polymorphic instance。 請問個 method resolution 係幾時發生? 係 compile time 定 runtime ?」

A: 「 runtime 」

B: 「 既然係咁,resolved method 會隨住 contactContext 嘅 concrete type 不同而變化,啱唔啱? 」

A: 「啱。所以 ?」

B: 「所以 java 係 multiple dispatch」

A: 「呢啲叫 dynamic dispatch。 Java 係 single dynamic disptach language。 不如叫你 Team Lead 出嚟, 我有啲嘢同佢講。」


5 分鐘後 Team Lead 進場, 望住A:「屌,copy and paste 算鳩數啦, KISS 呀,仲 visitor pattern。」, 又望住B:「DLLM, 你連 java 係唔係 multiple dispatch 都搞亂,邊個 in 你架?」 , 又望住我:「兩條撚樣嘈足成個鐘都唔制止下,知唔撚知阻住人放工呀?」


自此,A 和 B 互相仇恨,Team 內氣氛變得異常肅殺。 兩人勢不兩立,一眾 developer 漸漸分為A黨和 B黨。 少數清流如我, 經常成為磨心。黨爭越演越烈,人心渙散,人才紛紛離職。 眼見本來不錯的班底日漸分崩離析,高層決定平息風波,辭退AB二人。


記得兩人同日 last day,只有我為他們送行。
B 搭著我的肩膀,眼眶微紅:「曾經有條撚樣講過,人最大的煩惱就是記性太好。 哼,我偏偏忘記 java 是 single dispatch。 」, 我聳了聳肩,尚未開口,他已消失於偌大的 office中。


A 似乎憤恨如昔,背著我冷冷説道:「技不如人又要面子,也只有你會和他做朋友」, 我嘗試爭辯:「 我也和你做朋友。 為一點小事,葬送一個大好 project, 值得嗎?」, A沉默半餉:「不值得, 但我痛快」。 我默然嘆息,問道:「今後有何打算?」, A很爽快:「去一個無人認識的地方,再闖個名堂。 要是日後你在同行之間,聽説一個乜撚都用 visitor pattern 的人,那個一定是我。」 。。。。二人的面貌我已記不清,我只知道,每個人都會堅持自己的信念,在別人看來,是浪費時間,他們卻覺得很重要。

《完》


Source:
發覺Design Pattern 呢一本書幾有用.
https://lih.kg/bqBdRLV
#32 回覆 - 分享自 LIHKG 討論區
2024-07-29 17:00:53
點睇onion architecture? 本人就覺得多鳩餘
2024-07-29 17:49:03
睇你啲野有幾複雜
覺得system 比多 module
啲 logic 又比較複雜先有用
同埋我新好 buy application logic 先同 db 分開
2024-07-29 22:37:48
嘩 陳年事lu.
2024-07-29 22:54:30
2024-07-30 00:04:38
Yay Just a naming for some common pratice
2024-07-30 03:22:47
連clean architecture都只係onion architecture既變種
2024-07-30 03:27:39
GoF既錯係佢將判斷好壞Pattern既標準定義做Low Coupling, High Cohesion
但大部份developer根本唔鍾意開咁多interface
有D甚至乎連interface都無開就claim自己用左GoF Design Pattern
----
不過最自欺欺人既係framework implement左就當自己有用過
2024-07-30 03:36:39
2024-07-30 07:16:32
主要睇隻Language提供咩功能
Dynamic Languages唔需要某啲Creational patterns
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞