最近,讀《程式設計人生》採訪jamie談到有關對「設計模式」的看法,jamie回答:
「有本書叫《設計模式》,人人追捧,奉為圭臬。許多人都對這書著了魔,參加各種會議時,他們嘴裡不時蹦出從書中讀到的術語。比方說,反轉-翻轉-兩次後空翻模式,簡直一派胡言。」我們都知道,設計模式這本書裡沒有什麼「兩次後空翻模式」,jamie只是在諷刺那些拿著這本「配方書」,找幾個相近的模式,套著用就以為是設計和程式設計的人。
我在讀書時,剛接觸物件導向程式設計。有老師推薦《設計模式》這本書,我當時也讀了,然後在課程實踐中總是想方設法的去套用更多的模式,以體現程式的設計感。
如今想來十分可笑,所以在看到jamie有關設計模式這段評價後不禁莞爾。《設計模式》像一本菜譜,從來沒做過什麼菜的人才需要經常去看菜譜,然後照貓畫虎。
有過照著菜譜做菜的經歷,會看到這樣的描述:」將瘦肉切成約5厘公尺長、2.5厘公尺寬、0.3厘公尺厚的大薄片,鍋裡倒入30克油 ,燒熱後翻炒5分鐘等等「,然後我們不知所措,
因為5厘公尺、30克、5分鐘這種描述實在太難掌握了,廚師有一種能力叫火候、設計和程式設計也同樣,沒有大量的思考與實踐你沒法從一本薄薄的「配方書『中學到真正解決問題的方法。
這又讓我想到了面試時,都喜歡問設計模式問題。如今模式基本已經固化在很多成熟的開源框架中。
例如最流行ssh框架,spring固化了單例、工廠等模式、struts固化命令模式、hibernate固化了介面卡等模式,即使剛畢業的學生按照這些固定的程式設計框架也能寫出符合規範模式的程式,但了解這些模式和真正的設計程式設計差距甚遠。
正如從沒有大廚看著菜譜去製作滿漢全席的,真正的大師也不會套著模式去設計程式設計。
模式是前人解決某類問題方式的總結,合理與否在於你對問題域的判斷,重點在問題域而非方式,設計的中心永遠是問題域的界定,才是方式的取捨與平衡。
當你解決了乙個前人從沒有解決的問題時,你走過的路,後來的追隨者會給它起個名字」xx模式「。
設計模式之禪之設計模式 門面模式
1 package com.yeepay.sxf.template18 2 3 寫信的業務類 4 隱藏在門面角色裡邊,不需要暴露太多5 author sxf6 7 8public inte ce iletterprocess view code 寫信的業務類的實現 1 package com.yee...
設計模式之禪之設計模式 橋梁模式
1 package com.yeepay.sxf.template24 2 3 實現化角色 4 相當於不同的業務邏輯,抽象出共有行為5 6 產品類7 author sxf8 9 10 public abstract class product view code 房子產品實現 1 package c...
設計模式 設計模式之工廠模式
工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...