面向對象具備封裝性,繼承性,多態性.封裝隱蔽了對象內部不須要暴露的細節,使得內部細節的變更跟外界脫離,只依靠接口進行通訊.封裝性下降了編程的複雜性. 經過繼承,使得新建一個類變得容易,一個類從派生類那裏得到其非私有的方法和公用屬性的繁瑣工做交給了編譯器. 而繼承和實現接口和運行時的類型綁定機制所產生的多態,使得不一樣的類所產生的對象可以對相同的消息做出不一樣的反應,極大地提升了代碼的通用性. 總之,面向對象的特性提升了大型程序的重用性和可維護性.算法
面向過程就是分析出解決問題所須要的步驟,而後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就能夠了。 面向對象是把構成問題事務分解成各個對象,創建對象的目的不是爲了完成一個步驟,而是爲了描敘某個事物在整個解決問題的步驟中的行爲。面向對象是以功能來劃分問題,而不是步驟。編程
面向對象: 人.吃(肉) 面向過程: 吃.(人,肉)設計模式
面向過程強調的是「吃」,「人」只是一個參數;面向對象強調的是「人」,「吃」只是一個動做。緩存
面向對象的六大原則服務器
經常使用的設計模式有如下11種:異步
1) 單例模式:目的是爲了讓系統中只有一個調用對象,缺點是單例使其餘程序過度依賴它,並且不一樣單例運行在不一樣進程中,使得維護困難;(建立型)函數
在Android系統中,經過Context的getSystemService(String name)獲取系統級別的服務或是LayoutInflater的類,這些服務會在合適的時候以單例的形式註冊在系統中。ui
2) 建造者模式:將一個複雜對象的構建與它的表示分離,使得一樣的構建過程能夠建立不一樣的表示。spa
在Android源碼中,最經常使用到Builder模式的就是AlertDialog.Builder,使用該Builder來建立複雜的AlertDialog對象。經過Builder對象來組裝Dialog的各個部分,如title、buttons、Message等,將Dialog的構造和表示進行分離。線程
3) 原型模式:用原型實例指定建立對象的種類,並經過拷貝這些原型建立新的對象。被複制的實例就是「原型」,這個原型是可定製的。在Android的應用有ArrayList和Intent(intent.clone();,涉及深拷貝和淺拷貝)。
4 工廠模式:生產固定的一些東西,如抽象類,缺點是產品修改麻煩;如喜歡動做片和愛情片的人分別向服務器發出同一個請求,就能夠獲得他們想看的影片集,至關於不一樣對象進行同一請求,需求均獲得知足。(建立型)
在Android中應用最普遍的模式,最經常使用的有Activity中的各個生命週期(如onCreate()等)。ArrayList和HashSet中的iterator方法也至關於一個工廠方法,專爲new對象而生。
5) 策略模式:定義了一系列的算法,並將每個算法封裝起來,並且使他們還能夠相互替換。策略模式讓算法獨立於使用它的客戶而獨立變化。
工廠方法模式(建立型) |
抽象工廠模式 |
策略模式(行爲型) |
只有一個抽象產品類,關注對象建立 |
有多個抽象產品類 |
關注行爲的選擇 |
具體工廠類只能建立一個具體產品類的實例 |
具體工廠類能建立多個具體產品類的實例 |
白盒子(知道具體的實現過程) |
6) 觀察者模式:就是多個對象對一個對象進行監控,如緩存;(行爲模式)
7) 代理模式:本身的事交給別人去作,分別返回結果便可,如異步線程;(結構型模式)
8) 命令模式:調用對象與做用對象之間分離,由中間件來協調二者之間的工做,如控制器;(行爲模式)
PackageManagerService中,其對包的相關消息處理右其內部類PackageHandler承擔,其將須要處理的請求做爲對象經過消息傳遞給相關的方法,而對於包的安裝、移動以及包大小的測量則分別封裝爲HandlerParams的具體子類InstallParams、MoveParams和MeasureParams。
9) 適配器模式:將一個接口變成所需的接口,如Baseadapter能夠適配listview和spinner(結構型模式)
10) 合成模式:將一對多的關係轉換成一對總體的關係,如listview與適配器;(結構型模式)
11) 訪問者模式:對不一樣的對象採起不一樣的處理,如instanceof。(行爲模式)
Android編譯註解(註解,也被稱爲元數據,做用就是將咱們的須要的數據儲存起來,在之後的某一個時刻(多是編譯時,也多是運行時)去調用它。)核心依賴APT(Annotation Processing Tools)。當咱們經過APT處理註解時,最終會將獲取到的元素轉換爲相應的Element元素,以便獲取到它們對應信息。
九種diagram:用例圖、類圖、對象圖、組件圖、部署圖、時序圖、協做圖、狀態圖、活動圖。