设计模式:Mogwai或Gremlins?
1994年出版的《 設(shè)計模式:可重用的面向?qū)ο筌浖脑亍废蛟S多軟件開發(fā)人員介紹了“針對常見設(shè)計問題的簡單明了的解決方案目錄”的概念,如今幾乎每個面向?qū)ο蟮能浖_發(fā)人員都將其稱為“ 設(shè)計模式”。 。” 像大多數(shù)技術(shù)概念(無論是真實的還是炒作的還是介于兩者之間的)一樣,“設(shè)計模式”似乎經(jīng)歷了接受的正常階段,從新思想Swift發(fā)展為普遍的思維方式。 與往常一樣,由于設(shè)計模式被過度使用,濫用和使用不當(dāng) ,流行度的Swift上升導(dǎo)致了強烈反對。 如今,正確使用設(shè)計模式似乎已被視為一種有用的工具,但通常認(rèn)為使用不當(dāng)會導(dǎo)致危險。
我通常避免在整個博客文章中都討論設(shè)計模式的優(yōu)缺點,但是最近一位軟件開發(fā)人員做出了一個類比,涉及他對設(shè)計模式的使用和濫用的觀察。這激勵了我寫這篇文章。 安迪指出,一些軟件開發(fā)人員似乎傾向于采用一種無害且意圖明確的設(shè)計模式并將其轉(zhuǎn)變?yōu)樾皭?,就像將像Gizmo這樣的Mogwai轉(zhuǎn)變?yōu)镚remlin一樣 。 在本文中,我將詳細(xì)探討為什么這是一個特別適合電影主題的類比,用于將有效使用設(shè)計模式轉(zhuǎn)變?yōu)闉E用和濫用設(shè)計模式。
1984年的電影Gremlins始于唐人街的一位發(fā)明家和父親,購買了Mogwai。 商店所有者Wing先生不愿意將Mogwai賣給發(fā)明人/父親,因為“ Mogwai承擔(dān)了很多責(zé)任”。 然而,榮先生的孫子偷偷地將莫格威人賣給了發(fā)明人/父親,同時警告他要注意的三點重要事項,即與莫格威人的照料有關(guān)。 這三件事是:
設(shè)計模式的適當(dāng)使用不受午夜后的明亮光線,水或進(jìn)食的影響,但是應(yīng)用設(shè)計模式時不小心的后果可能與不正確照顧Mogwai相似。
快速產(chǎn)生設(shè)計模式
當(dāng)Mogwai或Gremlins變濕時,更多Mogwai或Gremlins會自發(fā)繁殖。 對于具有設(shè)計模式的開發(fā)人員來說,效果可能非常相似。 對于剛接觸設(shè)計模式的開發(fā)人員(或者對自己最近學(xué)習(xí)的新設(shè)計模式感到興奮的開發(fā)人員),將太多的設(shè)計模式應(yīng)用于相同的問題很容易。 如果設(shè)計模式很好,那么更多的設(shè)計模式必須更好。 同樣,對于開發(fā)人員來說,很容易陷入將相同的設(shè)計模式應(yīng)用于太多不同,不同且無關(guān)的問題的陷阱( Maslow's Hammer )。
設(shè)計模式變得邪惡
如果Mogwai在午夜之后進(jìn)食,就會變成頑皮的Gremlins。 同樣,如果使用不當(dāng),設(shè)計模式可能弊大于利。 錯誤使用的設(shè)計模式可能會混淆代碼的意圖。 幾種設(shè)計模式一起使用也可以掩蓋意圖。 如果不謹(jǐn)慎使用,旨在促進(jìn)更好設(shè)計的設(shè)計模式通常會導(dǎo)致設(shè)計變差。 一種情況下的設(shè)計模式可能是另一種情況下的反模式。
將常見設(shè)計原則分類為模式的好處之一是能夠幫助開發(fā)人員和設(shè)計人員之間進(jìn)行交流。 但是,當(dāng)錯誤使用或過度使用設(shè)計模式時,可能會產(chǎn)生完全相反的效果(妨礙理解和溝通)。 我也看到過這樣的情況,當(dāng)開發(fā)人員堅持使用某種特定的設(shè)計模式時,他或她實際上使用的是完全不同的設(shè)計模式甚至是反模式。 在這種情況下,使用“設(shè)計模式”術(shù)語也會造成混淆,而不是加以澄清。
善意卻構(gòu)想
這些問題最常見于開發(fā)人員應(yīng)用設(shè)計模式時,因為他們認(rèn)為應(yīng)該這樣做,而不是因為他們真正了解特定情況下的價值。 開發(fā)人員不僅需要了解不同設(shè)計模式的優(yōu)勢和目標(biāo),還需要了解與之相關(guān)的權(quán)衡取舍,而不是將相同的設(shè)計模式應(yīng)用于每個問題,或?qū)⒃O(shè)計模式塞入不合適的情況。設(shè)計模式,以便就設(shè)計模式的應(yīng)用做出明智的決定。
有效利用設(shè)計模式
在我看來,設(shè)計模式的最佳使用是當(dāng)開發(fā)人員根據(jù)觀察到需求的經(jīng)驗自然地應(yīng)用它們而不是強迫使用它們時發(fā)生的。 畢竟,當(dāng)“ 四人幫”編寫有關(guān)設(shè)計模式的書時,他們正在對開發(fā)人員已經(jīng)在使用的現(xiàn)有設(shè)計模式進(jìn)行分類。 確實,他們書中涵蓋的某些模式變得如此流行,以至于它們被合并到Java語言語法和其他更新的語言中。 例如,Java提供了接口 (這有助于原始設(shè)計模式書中介紹的許多設(shè)計模式),而諸如Scala和Groovy之類的較新語言則添加了自己的模式實現(xiàn)。
設(shè)計模式的使用:Gizmo或Gremlin?
如果使用得當(dāng),設(shè)計模式將具有吸引力并令人期待,就像Mozwai的Gizmo是理想的寵物一樣。 但是,如果使用不當(dāng)或在沒有適當(dāng)注意和考慮的情況下應(yīng)用設(shè)計模式,則可能會變成Gremlins,嚴(yán)重破壞代碼基礎(chǔ),并妨礙理解和維護(hù)設(shè)計的能力。 請注意,設(shè)計模式本身并不一定是問題,而是由正確使用設(shè)計模式的人來決定它們是否保持理想的狀態(tài)(例如Gizmo)或不良狀態(tài)(例如Gremlins)。
參考: 設(shè)計模式:Mogwai或Gremlins? 由我們的JCG合作伙伴 Dustin Marx在Inspired by Actual Events博客中獲得。
翻譯自: https://www.javacodegeeks.com/2012/11/design-patterns-mogwai-or-gremlins.html
總結(jié)
以上是生活随笔為你收集整理的设计模式:Mogwai或Gremlins?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3.5 html实体编码/解
- 下一篇: .NET Core解决MVC视图中的中文