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