《Android源碼設計模式》--原型模式

來源:互聯網
上載者:User

標籤:gem   複製   設計   初始化   目標   col   硬體   tar   方法   

No1:

原型模式使用情境:

1)類初始化需要消耗非常多的資源,這個資源套件括資料、硬體資源等,通過原型複製避免這些消耗

2)通過new產生一個對象需要非常繁瑣的資料準備貨存取權限,這是可以使用原型模式

3)一個對象需要提供給其他對象訪問,而且各個調用者可能都需要修改其值時,可以考慮使用原型模式複製多個對象供調用者使用,即保護性拷貝

No2:

原型模式大部分是通過實現cloneable介面實現的,但通過clone拷貝對象時並不會執行建構函式。

No3:

Cloneable是一個標識介面,裡面的clone方法並不是Cloneable介面的,而是Object中的方法。

No4:

淺拷貝實際上並不是將原始文檔的所有欄位都重新構造了一份,而是副本文檔的欄位引用原始文檔的欄位,解決辦法就是採用深拷貝

No5:

ArrayList實現了Cloneable介面,屬於原型模式

No6:

Intent內部的複製方式是通過new Intent(this)建構函式進行拷貝。因為只有在對象的構造成本比較高或者構造較為麻煩的時候,才使用clone()函數實現高效率

No7:

PackageManagerService(PMS)啟動之後,會掃描系統中已安裝的apk目錄,PMS會解析apk包下的AndroidManifest.xml檔案得到APP的相關資訊,完成之後就構建好了整個apk的資訊樹。PMS對於apk的解析工作它在建構函式時就已經開始了。

No8:

PMS不僅需要載入系統已安裝的各類apk,在此之前還需要載入Framework資源與核心庫,載入了資源與核心庫之後才開始對掃描的指定目錄下的apk檔案進行解析。

No9:

startActivity最終也是調用startActivityForResult

No10:

在系統啟動時PackageManagerService會啟動,此時PMS將解析所有已安裝的應用的資訊,構建一個資訊表,當使用者通過Intent來跳轉到某個組件時,會根據Intent中包含的資訊到PMS中尋找對應的組件列表,最後跳轉到目標組件中。

No11:

原型模式有一個最重要的用途就是保護性拷貝,也就是某個對象對外可能是唯讀,為了防止外部對這個唯讀對象修改,通常可以通過返回一個對象拷貝的形式實現唯讀限制。

No12:

優點:

原型模式是在記憶體中二進位流的拷貝,要比直接new一個對象效能好很多,特別是要在一個迴圈體內產生大量的對象時,原型模式可以更好的體現其優點。

缺點:

既是優點也是缺點,直接在記憶體中拷貝,建構函式是不會執行的。優點是減少了約束,缺點也是減少了約束。

《Android源碼設計模式》--原型模式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.