av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

對架構師的一些理解

在討論架構之前,我們先上道菜,青椒土豆肉絲,這道小菜味道還是不錯的,自私點了,不考慮您是否喜歡,今天就上它了。

內江ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

準備原材料:食用油、青椒、土豆、肉絲、大蔥、香醋、雞精和食鹽。當然根據(jù)需要您可以再加入其他輔料。把青椒、土豆、肉片都切成絲,大蔥切好,OK,一切準備就緒,開火,往鍋里加油,等油熱后,放切好的蔥片,聞到蔥香,放肉絲,稍微加些醬油,爆炒,接著放土豆絲和青椒絲,等八成熟,撒些雞精和食用鹽,出鍋。

細心的讀者可能發(fā)現(xiàn),剛開始的時候我好像并沒有準備醬油,是的,我確實沒準備醬油,坦白的講,有時候當鍋里的油熱的時候,我突然發(fā)現(xiàn)蔥忘記洗了,更談不上切成蔥片了,此時我會匆匆忙忙的去洗,去切,甚至有時候慌里慌張的把手給切破。

通過我們做上面的一道菜,我們總結了以下幾點:

總結1:巧婦難為無米之炊,我們要想做好這道菜,需要原材料;

總結2:這些原材料以時間為軸心他們彼此之間是有順序關系的;

總結3:可能在某一步驟里,我們突然想添加些事先并沒準備好的原材料;

總結4:一旦形成熱油鍋,似乎你要在這么短的時間內完成這些動作,做過飯的朋友更能體會到這句話。

言歸正傳,以軟件的思想去考慮上面的業(yè)務(事情),原材料,你可以理解為類庫;順序關系,你可以通過事件來描述;事先并沒準備好的原材料,你可以通過接口(抽象類、虛函數(shù)等),讓用戶重載去實現(xiàn);到這里你會發(fā)現(xiàn),一旦打開“煤氣”,去“引爆”預先設計的事件、接口,就好比多米諾骨牌一樣一個接一個的傳遞下去,在某一時刻,它會檢查是否放了“蔥片”、是否放了“肉絲”,不好,“食用油”你就沒放,還炒什么菜,扔出異?!?/p>

是的,上面就是框架,要想設計一個好的框架,看來我們首先要知道“青椒土豆絲”的做法,它大概需要哪些“原材料”,以及這些“順序關系”該如何通過具體的語言去實現(xiàn);當然了,要炒出“不同的菜”,具體的原材料和順序關系又是不同的。下面通過分析幾個大家比較熟悉的框架來更詳細的說明。

MFC框架:

MFC中的框架思想采用了MVC的思想,其中CWinApp是全局型的,整個程序的引爆也是其在“搞鬼”,在其內部有指向文檔模版的指針,而模板又攘括了視圖、視圖的管理者(就是那個frame)和文檔類,順序關系是靠消息泵來推動。通過下面的調用關系可以看到各個類的“相互依存”(說明:下面的表摘自網(wǎng)絡)


從該對象 如何訪問其他對象
全局函數(shù) 調用全局函數(shù)AfxGetApp可以得到CWinApp應用類指針
應用 AfxGetApp()->m_pMainWnd為框架窗口指針;用CWinApp::GetFirstDocTemplatePostion、CWinApp::GetNextDocTemplate來遍歷所有文檔模板
文檔模板 調用CDocTemplate::GetFirstDocPosition、CDocTemplate::GetNextDoc來遍歷所有對應文檔
文檔 調用CDocument::GetFirstViewPosition,CDocument::GetNextView來遍歷所有和文檔關聯(lián)的視圖;調用CDocument:: GetDocTemplate 獲取文檔模板指針
視圖 調用CView::GetDocument 得到對應的文檔指針; 調用CView::GetParentFrame 獲取框架窗口
文檔框架窗口 調用CFrameWnd::GetActiveView 獲取當前得到當前活動視圖指針; 調用CFrameWnd::GetActiveDocument 獲取附加到當前視圖的文檔指針
MDI 框架窗口 調用CMDIFrameWnd::MDIGetActive 獲取當前活動的MDI子窗口(CMDIChildWnd)

您可以試著聯(lián)想“炒菜”的過程去思考上面的這張表,如果您真的理解了,我相信您會覺得他們之間沒有什么區(qū)別(不過坦白來講真的理解并沒有那么容易),好吧,你可能又發(fā)出疑問?如果去做“填空題”?在MFC里是通過處理消息來實現(xiàn)。那么為什么沒有采用虛函數(shù)及多態(tài)來實現(xiàn)?這個問題問的很好,不過我沒打算在這里進行說明,你可以在侯杰的《深入淺出MFC》里找到答案。(我不是有意來推這本書,實在沒看到其他更好的)??赡苣銖膩頉]接觸過MFC,那就不要去思考了,下面舉另外一個例子。

asp.net:

asp.net的webForm以其容易上手而著稱,如果你深入的理解了其頁面生命周期后,你會發(fā)現(xiàn)這好像又是在“炒菜”,而我們要做的只是在不同的“炒菜步驟”內去定制我們的一些小創(chuàng)意,可能在Page_PreInit里、在Page_Init里、在Page_Load里或其它事件里,無論如何,您逃不過如來佛的手掌心,你要做的工作,就是在這些事件里去定制,換句話說,你搞不出來“宮保雞丁”,想搞個“宮保雞丁”該怎么辦?asp.net MVC 粉墨登場……自己可以分析下,這里就偷懶省略了。

從炒菜到實例分析,現(xiàn)在我們基本上對軟件架構有了一個大概的認識:

認識1:框架架構是有邊界的,不光如此,你必須有全局的概念才能去設計框架。所謂邊界是針對不同的業(yè)務,比如MFC是針對傳統(tǒng)的桌面程序,當遇到WEB時,似乎就不怎么靈光了,不然微軟不會花費那么多功夫去推.NET。

認識2:框架的實現(xiàn)是組件的相互關聯(lián)(通過接口,事件等),如果你手里有些基本的類庫,不要告訴我是框架。

認識3:設計框架不是為了好玩(其實它本身并不好玩),因為你要為“兩個人”負責:業(yè)務和使用框架的人。建立在你框架上的應用必須能解決你實際的業(yè)務問題,同時要考慮怎么樣讓開發(fā)人員能“懶惰”下來,比如就是做做填空題。

認識4:設計框架要有一個好的框架思想,和具體語言無關,但你必須明白,不同的語言,甚至相同的語言去實現(xiàn)的方式又不相同,比如MFC采用了宏來實現(xiàn)消息機制,而asp.net內采用虛函數(shù)等來實現(xiàn)多態(tài)。

認識5:你要時刻明白,接下來可能炒的菜就是“宮保雞丁”,也就是說你要知道自己在干什么,要熟悉自己的“業(yè)務”,比如當你設計MFC框架時,你要考慮一個傳統(tǒng)的桌面程序要解決的大部分問題會是什么?比如打印,比如進程通信,比如文件操作,比如音視頻,數(shù)據(jù)庫操作,ole,等等。同樣的,當你來設計ASP.NET時,因為這道菜是針對HTTP的,這個時候你如果連HTTP是什么都不知道,我想你炒不好這道菜。

OK,我想這篇文章該結束了,因為我們的“菜已炒好”,如果你認真仔細的看到這里,估計已經(jīng)浪費了你近五分鐘的時間,希望能給你帶來點思考,比如:架構師就是來“炒菜”,可能吧,也可能我的觀點并不完全正確。不過我歡迎聆聽每個朋友對架構的理解。謝謝。


當前題目:對架構師的一些理解
新聞來源:http://uogjgqi.cn/article/cdogohp.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流