跟同學聊了通電話,討論了一下需求理論,架構,軟件擴展性方面
的東西。好吧。。。搞硬件的跟搞軟件的瞎聊一下這個好象也不奇
怪。
軟件易擴展屬于開發質量要求。這樣一些非功能性需求往往很重要
。理論其實很重要,嗯,從兩道面試題說起,面試官都喜歡問,嗯,
俺也喜歡問。遺憾的是沒聽到過想要聽的答案。
1,重定向redirect和內部跳轉forwar有什么區別或在什么場景使
用?
求職者多半的回答是redirect是瀏覽器執行的跳轉動作,好吧
給8分9分的也行。 forward是應用服務器內部跳轉,屬同一個
request好吧,給10分也行。網上的面試寶典答案也跟這個類似。
沒毛病。但不甚滿意。redirect本質是應用服務器通過http協
議發出一個html文本,里面包含refer:URL指令,瀏覽器解析到這個
指令后跳轉到那個URL。嗯,至少了解http原理,給10分。forward
確實是內部跳轉,可是怎么用頗值得探討一下。我們知道設計模式
中的簡單工廠類經典實現是 if(1) return 產品1 ; else return
默認產品; 。 那forward所在控制器類能否扮演一個簡單工廠類的
角色呢?if(1)forward 控制器1; else forward 控制器2; 應用場
景舉例,比如我有一個產品查詢頁面,有兩種不同的實現方式,一
種是通過solr引擎檢出,一種是數據庫直接檢出結果。通過forward
,可以把兩種實現同時寫到產品里??膳浠蛘吒鶕煌瑮l件用不同的
解決方案。這樣就變成了 (頁面A,控制器A ,serviceA),(頁面A,
控制器B,serviceB)。兩個組件共用一個頁面A。 因為是兩個組件,
擴展性自是極好的,比如我們還可以增加一個內存數據庫查詢結果
的解決方案,而只用簡單的修改一下 forward所在的控制器類。簡
單工廠模式加策略模式的組合應用。理解設計模式和組件的概念,
有思考,嗯,給12分。
2,mvc模式中的m,v,c 分別指什么?
m就不必多說。但是v就很值得思量。 一般的回答是jsp和swing.
這種說法很片面,也可以說沒理解mvc。 v指view,翻譯是視圖,貌
似jsp和swing的回答沒毛病,網上也多說是這個。但v準確的理解應
該是邊界,即和系統交互的一切東西。比如觸發某個任務的時鐘,
調用系統的某個外部系統,人機交互的界面等.這樣子的理解,即
使沒有界面的功能也同樣適用mvc. c也有講究,就不說了。
編程確實是一種藝術,但是很多東西都很抽象,理解了就是一
種思想,沒理解或不通透就是一種工具。搞程序的和搞硬件的我想
理論比經驗更重要。因為經驗有可能是錯的,理解透了的理論則不
會。