歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android設計模式系列

Android設計模式系列

日期:2017/3/1 10:37:49   编辑:Linux編程

=======================2011-08-26==================================
有時候,最難的是堅持;有時候缺少的是信念。
=======================2011-08-07==================================
從接觸設計模式到如今大概4年左右的時間,一直都想有朝一日定要精通,坐於床頭,側望左右,設計模式的書買了7,8本了,也看了很多參考和視頻,也用到了一些。但是今天我終於停下來,停下來梳理,停下來欣賞,也停下來反省,總之,我今天停下來了,是為了走的更好,走的更遠。
如果有幸我能夠把這個系列寫到23+N,我想至少我的技術上會為我增色不少,會為我帶來更強烈的信心;
如果有幸我能夠把這個系列寫到23+N,我想至少我去買者方面書籍的時候,我不會那麼動心了,我也許不深,你也未必;
如果有幸我能夠把這個系列寫到23+N,我想至少後面架構和Android的底層我會更加了解,我會看的更清楚,也看的更遠。
我自己也是這麼想得,所以我會堅持,我要把這個進行到底,寫下去,寫完23,我寫+N,寫完SDK,我寫別人的開源項目,寫完開源,我寫我個人項目,寫完個人項目,我寫我自己的開源項目,至少我要寫到我認為我應該繼續寫的時候,我如是想,也如是做!
我就是這麼想的!
=======================2011-07-29==================================
看了很多年的設計模式,也看了很多種設計模式,也在工作中用了幾個常見的設計模式。
android中,包括源碼和一些開源項目,用到了很多經典設計模式,而且也用的非常的精彩。
學習android也有一些日子了,有空的時候看看源代碼,看看開源項目的代碼,自己也會再工作中寫寫代碼。
今天,斗膽,基於android(其實就是java),把自己對設計模式的一些粗淺認識,默默的分享出來,希望能得到各位同仁的指點,以期設計能力更進一步。
我將以《設計模式:可復用面向對象軟件的基礎》為准,發掘android中各種設計模式的使用情況,提取核心部分,做為實例。
因為不需要寫代碼,應用場景又一般是android中自帶的,所以文中可能會注重意圖介紹和UML結構圖的繪制,然後具體設計模式的本身和擴展還需要各位參考其他資料。
下面我列舉一些重要的認識點:

設計模式,提供了很多軟件工程問題所需處理的解決方案。

根據模式的目的可分為3類:
1.創建型模式:與對象的創建有關。
2.結構性模式:處理類與對象的組合。
3.行為性模式:對類或對象怎樣交互和怎樣 分配職責進行描述。

面向對象設計的2個基本原則:
1.針對接口編程,而不是針對實現編程。
2.優先使用對象組合,而不是類繼承。

面向對象設計的5個設計原則:
1.單一職責原則(SRP)
2.開放封閉原則(OCP)
3.Liskov替換原則(LSP)
4.依賴倒置原則(DIP)
5.接口隔離原則(ISP)

23中設計模式:
1.創建型模式:
(1).工廠方法模式
(2).抽象工廠模式
(3).創建者模式
(4).原型模式
(5).單例模式
2.結構型模式:
(6).適配器模式
(7).橋模式
(8).組合模式
(9).裝飾模式
(10).外觀模式
(11).享元模式
(12).代理模式
3.行為型模式
(13).解釋器模式
(14).模板方法模式
(15).職責鏈模式
(16).命令模式
(17).迭代器模式
(18).中介者模式
(19).備忘錄模式
(20).觀察者模式
(21).狀態模式
(22).策略模式
(23).訪問者模式
除此之外,後來人發現很多新的模式,如空模式等。

下面列舉幾個常見的問題導致重新設計,可能需要設計模式來分析解決:
1.通過顯示的指定一個類來創建對象
2.對特殊操作的依賴
3.對硬件和軟件平台的依賴
4.對對象表示或實現的依賴
5.算法依賴
6.緊耦合
7.通過生產子類來擴展功能
8.不能方便的對類進行修改

軟件的設計臭味:
1.僵化性
2.脆弱性
3.頑固性
4.粘滯性
5.不必要的復雜性
6.不必要的重復
7.晦澀性
... ...
總而言之,一句話,面向對象特性+原則+模式,折騰來折騰去就是這麼個回事。

Copyright © Linux教程網 All Rights Reserved