1.理解兩個概念 抽象和衍生
抽象:從相似的事物中,抽取出共同點,得到相似的結構
衍生:以抽象結構為基礎,添加些其他功能,得到具體的事物。
2. 系統OS,架構,應用程式,使用者之間的關係
使用者操作一個軟體的時候,其實中間還隔了一層,那就是系統,例如,使用者點擊了螢幕上的一個按鈕,就會對螢幕產生物理感應,螢幕將這種物理感應交給系統os處理,系統產生相應的事件對象,交給架構處理,架構交給相應的程式,進行相應的處理,然後逆向的將對事件的動作反映在螢幕上。
應用程式是由架構進行管理的,例如Android上,activity的儲存,程式的開啟,結束,等等都是有架構進行管理的。
看一個現實中的例子:
店員就相當於os系統,經理相當於架構,店員直接與客人進行溝通,一般的事情自己就解決了,除非遇到自己不能解決的問題,就去請示經理,有經理決定,在這張圖中,與客戶互動的細節幾乎都有店員處理掉了這樣經理就變得很輕鬆,os與架構之間的關係也可以概括架構和應用程式之間的關係,
有了經理這個架構,應用程式就變得簡單了。
3. 架構的特徵
3.1 架構裡的函數能夠呼叫應用程式之中的函數,通俗的講是前輩呼叫晚輩,架構先於程式誕生,稱之為前輩。程式在架構的基礎上誕生,所以稱為晚輩。前輩呼叫晚輩,會產生下述幾種效果
3.1.1 架構裡要定義很多的預設函數,工應用程式調用或者重寫
3.2.2 程式員的主要作用就是設計各種函數供架構來調用
3.3.3 如果應用程式中修改或者取代了預設函數,架構就會去調用程式中的函數,反之會去調用預設函數。
3.2 應用程式框架的典型雙向溝通情形
1. 架構中預設了f1(),程式中也定義了f1()。此時優先呼叫晚輩的f1()函數。
2. 架構「虛」設了f2(),亦即f2()是個抽象(abstract)函數。此時您務必
定義f2()來充實之,並供Linux/Windows 或其它函數呼叫。例如f3()呼叫f2()。
3. 架構預設了f3(),程式並未定義f3()。此時呼叫預設的f3()函數。
4. 架構預設了f4(),您也定義了f4()。此時優先呼叫f4()函數,而f4()可呼叫前輩(預設)的f4()函數。
總結:從可以看到,架構和應用程式之間,主動權掌握在框剪手裡,架構決定如何呼叫應用程式中的函數。