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、職責鏈模式
 事件分發(fā)、有序廣播
 請求者與處理者解耦,但是遍歷太多會影響性能
8、策略模式
 屬性動畫中的時間插值器
 返回值解析為例,傳入什么樣的解析器,就可以把二進制數(shù)據(jù)轉(zhuǎn)換成什么格式的數(shù)據(jù),比如String、Json、XML。
 主要用來分離算法,在相同的行為抽象下有不同的具體實現(xiàn)策略,展示了開閉原則
9、代理模式
 ActivityManagerProxy代理了AMS,實質(zhì)為遠程代理,前者內(nèi)部通過binder與AMS跨進程通信
 分為靜態(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)細節(jié)由子類完成。

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

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

五個基本原則:

1、單一職責原則:一個類,最好只做一件事,只有一個引起它的變化。單一職責原則可以看做是低耦合、高內(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ā)引起的風險,提高代碼的可讀性和可維護性。

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容