Android設(shè)計(jì)模式系列之組合模式
Android中對(duì)組合模式的應(yīng)用,可謂是泛濫成粥,隨處可見,那就是View和ViewGroup類的使用。在android UI設(shè)計(jì),幾乎所有的widget和布局類都依靠這兩個(gè)類。
組合模式,Composite Pattern,是一個(gè)非常巧妙的模式。幾乎所有的面向?qū)ο笙到y(tǒng)都應(yīng)用到了組合模式。
1.意圖
將對(duì)象View和ViewGroup組合成樹形結(jié)構(gòu)以表示"部分-整體"的層次結(jié)構(gòu)(View可以做為ViewGroup的一部分)。
組合模式使得用戶對(duì)單個(gè)對(duì)象View和組合對(duì)象ViewGroup的使用具有一致性。
熱點(diǎn)詞匯: 部分-整體 容器-內(nèi)容 樹形結(jié)構(gòu) 一致性 葉子 合成 安全性 透明性
2.結(jié)構(gòu)

針對(duì)View和ViewGroup的實(shí)際情況,我們選擇安全式的組合模式(在組合對(duì)象中添加add,remove,getChild方法),添加少許的注釋,我們把上圖修改為:

3.代碼
View類的實(shí)現(xiàn):
public class View{
//... ...
//省略了無關(guān)的方法
}
ViewGroup的實(shí)現(xiàn):
public abstract class ViewGroup extends View{
/**
* Adds a child view.
*/
public void addView(View child) {
//...
}
public void removeView(View view) {
//...
}
/**
* Returns the view at the specified position in the group.
*/
public View getChildAt(int index) {
try {
return mChildren[index];
} catch (IndexOutOfBoundsException ex) {
return null;
}
}
//other methods
}
4.效果
(1).結(jié)構(gòu)型模式
(2).定義了包含基本對(duì)象和組合對(duì)象的類層次結(jié)構(gòu)。這種結(jié)構(gòu)能夠靈活控制基本對(duì)象與組合對(duì)象的使用。
(3).簡(jiǎn)化客戶代碼?;緦?duì)象和組合對(duì)象有一致性,用戶不用區(qū)分它們。
(4).使得更容易添加新類型的組件。
(5).使你的設(shè)計(jì)變得更加一般化。
以上所述是小編給大家介紹的Android設(shè)計(jì)模式系列之組合模式,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- android設(shè)計(jì)模式之單例模式詳解
- Android開發(fā)中的MVC設(shè)計(jì)模式淺析
- 基于Android設(shè)計(jì)模式之--SDK源碼之策略模式的詳解
- Android應(yīng)用開發(fā)中控制反轉(zhuǎn)IoC設(shè)計(jì)模式使用教程
- Android設(shè)計(jì)模式之適配器(Adapter)模式
- Android 單例模式 Singleton 簡(jiǎn)單實(shí)例設(shè)計(jì)模式解析
- Android設(shè)計(jì)模式系列之工廠方法模式
- Android中的設(shè)計(jì)模式
- android開發(fā)設(shè)計(jì)模式之——單例模式詳解
- Android設(shè)計(jì)模式之代理模式Proxy淺顯易懂的詳細(xì)說明
相關(guān)文章
Android自定義View實(shí)現(xiàn)水波紋效果
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)水波紋效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
Android自動(dòng)獲取輸入短信驗(yàn)證碼庫(kù)AutoVerifyCode詳解
這篇文章主要為大家詳細(xì)介紹了Android自動(dòng)獲取輸入短信驗(yàn)證碼庫(kù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
Android Socket實(shí)現(xiàn)多個(gè)客戶端聊天布局
這篇文章主要為大家詳細(xì)介紹了Android Socket實(shí)現(xiàn)多個(gè)客戶端聊天布局,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
自定義視圖view使用Canvas實(shí)現(xiàn)手寫板和涂鴉功能
這篇文章主要介紹了自定義視圖view使用Canvas實(shí)現(xiàn)手寫板和涂鴉功能,這里直接上代碼,里面有詳細(xì)講解和注釋,需要的朋友可以參考下2023-04-04
android實(shí)現(xiàn)圖片驗(yàn)證碼方法解析(自繪控件)
本文主要介紹了android自繪控件的應(yīng)用--實(shí)現(xiàn)圖片驗(yàn)證碼方法案例,具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01
Android ListView列表優(yōu)化的方法詳解
列表 ListView 是應(yīng)用中最為常見的組件,而列表往往也會(huì)承載很多元素,這時(shí)就需要對(duì)其進(jìn)行優(yōu)化。本文介紹了 Flutter ListView 的4個(gè)優(yōu)化要點(diǎn),非常實(shí)用,需要的可以參考一下2022-05-05
Android進(jìn)階事件分發(fā)機(jī)制解決事件沖突
這篇文章主要為大家介紹了Android進(jìn)階事件分發(fā)機(jī)制解決事件沖突過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01

