Android架構學習-OOP複習

1.第一講
1.“-Oriented” 基於軟硬整合觀點 的涵意
” -Based” 的涵意;例如:Requirement-based
–基於需求,有先後的順序,例如先進行需求分析;然後基於需求分析的結果(文件),而進行後續的軟件開發活動;就稱爲:
Requirement-based softwaredevelopment
” -Driven” 的涵意;例如:Model-driven、Use Case-driven
–其實” -driven” 是”引導”,而不是大家常說的”驅動” 。
– 就向北極星引導我們,指出方向而已。也向汽車司機(Driver)只是引導汽車方向,並沒有去驅動汽車;而是引擎纔是驅動汽車
” -Centered” 的涵意;
例如:Architecture-centered、Architecture-centeric
–一切軟件開發的活動都圍繞着架構,就像盛誕節的糖果和禮物都掛在聖誕樹上一樣
Service-Oriented Architecture(SOA)軟件由服務所構成

2.對象
行爲、屬性

3.類 –類的用途:敘述軟件對象
類是一羣具有共同重要特性之對象,可以把類看成集合。類之定義就是說明這羣對象具有什麼的重要特性。特性包括對象之特徵及行爲。軟件中之對象以數據來表達特徵,以函數來表達行爲。因之,類之定義就是說明軟件中之對象,應含那些數據及那些函數。

4.<基類/子類>結構用途 基於軟硬整合觀點 (一):表達繼承
是一個。繼承基礎,擴充新增的功能,UML繪製的時候使用空心箭頭表示 繼承關係

5. <基類/子類>結構用途 基於軟硬整合觀點 (二):表達組合
實現一個接口。UML繪製時使用空心棱角箭頭表示組合關係組合和繼承可以進行轉換。Java中Thread的實現。可以使用組合實現,也可以使用繼承實現。
Java中使用自定義線程的方法有兩種。
1.直接繼承Thread然後實現run方法.–>繼承
2.創建類實現runnable接口,使用創建的類去創建個Thread對象 。如Thread t = new Thread(new Task());//Task是實現了接口的類
Java設置中爲何提供了兩種方式去實現多線程的創建,有區別嗎?

6.<基類/子類>結構用途 基於軟硬整合觀點 (三): 結構的接口(卡榫函數)
所謂「卡榫(Hook)」,就是用來接合兩個東西的接口。如果兩個東西於不同時間出現,則一方會預留虛空,給予另一邊於未來時刻能以實體來填補該空間,兩者虛實相依,就密合起來了。設計優良的卡榫,可以讓實體易於新陳代謝、抽換自如(Plug and Play, 俗稱PnP)。可以通過更換接口實現跨平臺等。
模版設計模式
變與不變的分離(Separate code that changes from the code that doesn’t)是設計卡榫(Hook)函數及應用框架之基本原則和手藝。
分離出變(Variant)與不變(Invariant)部份之後,就可以將不變部份寫在父類別(Superclass)裏,而變的部份就寫在子類別(Subclass)裏

7.IoC機制與基於 Default 軟硬整合觀點 函數

http://blog.csdn.net/lqw05/article/details/52204947

    控制反轉(IoC: Inversion of Control) IoC機制源自於OO語言(如C++等)的類別繼承體系,例如C++語言中,基類的函數可以主動調用子類的函數,這就是典型的IoC機制。

eg:

public abstract class Shape implements IShape {
        public void template_paint(Graphics gr){
                invariant_paint(gr); // 畫背景
                hook_paint(gr); // 畫前景
        }
        private void invariant_paint(Graphics gr){
                gr.setColor(Color.black);
                gr.fillRect(10,30, 200,100);
        } // 默認行為
        abstract protected void hook_paint(Graphics gr);--->利用該方法實現基類控制子類
}

基類與子類之間,主控權是在基類手上,透過Hook函數來調用子類。通常基類是撰寫在先,而子類則撰寫在後,這種前輩擁有主導權,進而「控制」後輩之情形,就通稱爲「控制反轉」 。

8.默認(Default)行爲
基類的重要功能:提供默認(預設)行爲基類可事先定義許多「默認」 (Default)函
數。這些默認函數可讓子類來繼承(或調用)之。

9. 主動型 vs.基於被動型 軟硬整合觀點 API
API這個名詞,有3個密切關聯的動詞:
定義(Define)
實作(Implement)
呼叫(Invoke or Call)
根據這3個角度,可將API區分爲「主動型」與「被動型」兩種
被動型API

  1. 基類定義API
  2. 且我來實作API
  3. 讓對方(即子類)來呼叫我

主動型API

  1. 我定義API
  2. 由子類來遵循、實作API
  3. 讓我來呼叫對方

10.接口與類

主要思考:IOC、控制點、主動與被動API的差別

發佈了37 篇原創文章 · 獲贊 31 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章