Android中設(shè)計模式簡單舉例

1、回調(diào)是觀察者模式的簡單形式硫豆。

觀察者模式也就是將回調(diào)上升到設(shè)計模式的理論高度上了而已龙巨。

2、單例模式
 ImageLoader熊响、LayoutInflater
3旨别、適配器模式
 ListView的adapter
4、建造者模式
 AlertDialog.Builder
 Glide.with(this).load(url).into(iv_demo);
5汗茄、觀察者模式
 BaseAdapter調(diào)用notifyDataSetChanged更新數(shù)據(jù)秸弛,內(nèi)部實現(xiàn)是觀察者模式
 BroadcaseReceiver
6、享元模式
 Message
 避免創(chuàng)建大量對象
7洪碳、職責(zé)鏈模式
 事件分發(fā)递览、有序廣播
 請求者與處理者解耦,但是遍歷太多會影響性能
8偶宫、策略模式
 屬性動畫中的時間插值器
 返回值解析為例,傳入什么樣的解析器环鲤,就可以把二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成什么格式的數(shù)據(jù),比如String、Json麦撵、XML澡谭。
 主要用來分離算法,在相同的行為抽象下有不同的具體實現(xiàn)策略西剥,展示了開閉原則
9痹栖、代理模式
 ActivityManagerProxy代理了AMS,實質(zhì)為遠(yuǎn)程代理瞭空,前者內(nèi)部通過binder與AMS跨進(jìn)程通信
 分為靜態(tài)揪阿、動態(tài)疗我,靜態(tài)代理是一種委托機制
 而動態(tài)代理通過InvocationHandler,利用反射機制實現(xiàn)
10南捂、組合模式
 view和viewGroupd的嵌套組合
11吴裤、簡單工廠

簡單工廠模式的工廠類一般是使用靜態(tài)方法,通過接收的參數(shù)的不同來返回不同的對象實例溺健。
不修改代碼的話麦牺,是無法擴展的。

工廠方法模式
BitmapFactory了鞭缭,通過各種decodeXXX()就可以從不同渠道獲得Bitmap對象剖膳,

12、抽象工廠模式
13岭辣、原型模式
 ArrayList實現(xiàn)了cloneable接口
 深拷貝吱晒、淺拷貝
14、模板方法模式
 AysncTask易结、activity生命周期方法等等很多都是

模板方法模式的使用場景也是一句話:流程確定枕荞,具體實現(xiàn)細(xì)節(jié)由子類完成。

15搞动、裝飾模式
 contextWrapper
 裝飾模式意在擴展躏精,而代理意在控制訪問
16、迭代模式
 List鹦肿、Map矗烛、Cursor
 支持以不同的方式去遍歷一個容器對象
17、外觀模式
 context箩溃,封裝了很多重要的操作瞭吃,只是一個定義了很多接口的抽象類
18、中介者模式
 主板相對于CPU/顯卡涣旨、內(nèi)存就是中介

三個基本特征:封裝歪架,繼承,多態(tài)霹陡;

五個基本原則:

1和蚪、單一職責(zé)原則:一個類,最好只做一件事烹棉,只有一個引起它的變化攒霹。單一職責(zé)原則可以看做是低耦合、高內(nèi)聚在面向原則上的引申浆洗,以提高內(nèi)聚性來減少引起變化的原因催束。如下面計算器例子里面,加減乘除各一個類:

2伏社、開放封閉原則(OCP):軟件的功能應(yīng)該是可擴展的抠刺,而盡可能的不修改塔淤。因為修改程序有可能會對原來的程序造成錯誤。不能修改矫付,但是可以添加功能凯沪,盡可能的在外邊添加新的類,如上面計算器的項目一樣买优。對于要添加的功能就添加一個類妨马,然后只修改下面的switch就可以了。

3杀赢、Liskov替換原則(LSP):子類必須能夠替換基類烘跺。這一思想體現(xiàn)為對繼承機制的約束規(guī)范,只有子類能夠替換基類時脂崔,才能保證運行期內(nèi)識別子類滤淳,這是保證繼承復(fù)用的基礎(chǔ)。如上例JisuanQi jsp=new Add(n1,n2);即:子類可以代替換父類砌左,而父類不可以替換子類脖咐。

4、依賴倒置原則:依賴于抽象汇歹,具體來說就是屁擅,高層模塊不依賴底層模塊,二者都通依賴于抽象产弹。抽象不依賴于具體派歌,而具體依賴于抽象。模塊間的依賴是通過抽象發(fā)生痰哨,實現(xiàn)類之間不發(fā)生直接的依賴關(guān)系胶果,其依賴關(guān)系是通過接口或抽象類產(chǎn)生的;接口或抽象類不依賴于實現(xiàn)類斤斧;實現(xiàn)類依賴于接口和抽象類早抠。采用依賴倒置原則可以減少類間的耦合性,提高系統(tǒng)的穩(wěn)定性撬讽,減少并發(fā)引起的風(fēng)險蕊连,提高代碼的可讀性和可維護(hù)性。

5锐秦、接口隔離原則:使用多個小的專門的接口咪奖,而不要使用一個大的總接口盗忱。就是每一個接口都執(zhí)行一個專門的功能酱床,用什么調(diào)什么。這樣可以提高代碼的靈活性趟佃,還可以降低類間的耦合性扇谣。提高穩(wěn)定性昧捷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市罐寨,隨后出現(xiàn)的幾起案子靡挥,更是在濱河造成了極大的恐慌,老刑警劉巖鸯绿,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跋破,死亡現(xiàn)場離奇詭異,居然都是意外死亡瓶蝴,警方通過查閱死者的電腦和手機毒返,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舷手,“玉大人拧簸,你說我怎么就攤上這事∧锌撸” “怎么了盆赤?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長歉眷。 經(jīng)常有香客問我牺六,道長,這世上最難降的妖魔是什么姥芥? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任兔乞,我火速辦了婚禮,結(jié)果婚禮上凉唐,老公的妹妹穿的比我還像新娘庸追。我一直安慰自己,他們只是感情好台囱,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布淡溯。 她就那樣靜靜地躺著,像睡著了一般簿训。 火紅的嫁衣襯著肌膚如雪咱娶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天强品,我揣著相機與錄音膘侮,去河邊找鬼。 笑死的榛,一個胖子當(dāng)著我的面吹牛琼了,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼雕薪,長吁一口氣:“原來是場噩夢啊……” “哼昧诱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起所袁,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤盏档,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后燥爷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜈亩,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年前翎,在試婚紗的時候發(fā)現(xiàn)自己被綠了勺拣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡鱼填,死狀恐怖药有,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情苹丸,我是刑警寧澤愤惰,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站赘理,受9級特大地震影響宦言,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜商模,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一奠旺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧施流,春花似錦响疚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至银受,卻和暖如春践盼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宾巍。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工咕幻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人顶霞。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓肄程,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绷耍,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 設(shè)計模式匯總 一、基礎(chǔ)知識 1. 設(shè)計模式概述 定義:設(shè)計模式(Design Pattern)是一套被反復(fù)使用鲜侥、多...
    MinoyJet閱讀 3,903評論 1 15
  • 本文首發(fā)于個人博客:Lam's Blog - 談?wù)?3種設(shè)計模式在Android源碼及項目中的應(yīng)用褂始,文章由Mark...
    格子林ll閱讀 4,626評論 1 105
  • 設(shè)計模式基本原則 開放-封閉原則(OCP),是說軟件實體(類描函、模塊崎苗、函數(shù)等等)應(yīng)該可以拓展,但是不可修改舀寓。開-閉原...
    西山薄涼閱讀 3,753評論 3 13
  • 做后臺產(chǎn)品的時候胆数,為了避免設(shè)計地凌亂,想了解一些系統(tǒng)設(shè)計模式思想互墓,于是找高內(nèi)聚低耦合相關(guān)的文章必尼。這篇文章是摘自網(wǎng)友...
    徐薇薇閱讀 2,179評論 0 0
  • 今天學(xué)習(xí)下最常見的工廠模式,工廠模式細(xì)分下來有三大類: 他們的目標(biāo)都是一樣的:封裝對象的創(chuàng)建篡撵。但是實現(xiàn)手段和使用場...
    西木柚子閱讀 2,140評論 7 28