Android 設(shè)計(jì)模式實(shí)戰(zhàn) Builder模式

定義:

將一個(gè)負(fù)責(zé)對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示

使用使用場景:

1.相同的方法赏酥,不同的執(zhí)行順序砂蔽,產(chǎn)品不同的結(jié)果

2.當(dāng)初始化一個(gè)對象特別復(fù)雜,如參數(shù)多奕纫,且很多參數(shù)都具有默認(rèn)值

實(shí)戰(zhàn)

public final class ImageLoaderConfiguration {

final DiskCachediskCache;

private ?ImageLoaderConfiguration(final ?Builder builder) {

? ? ? diskCache= builder.diskCache;

}

public static? ImageLoaderConfiguration createDefault(Context context) {

return new ?Builder(context).build();

}

public static class ?Builder {

? ? ? ? ? ? ? ?private DiskCachediskCache=null;

? ? ? ? ? ? ? ? public Builder(Context context) {

? ? ? ? ? ? ? ? ? ? this.context= context.getApplicationContext();

? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ? public? ImageLoaderConfiguration build() {

? ? ? ? ? ? ? ? ? ? ? ? ?initEmptyFieldsWithDefaultValues();

? ? ? ? ? ? ? ? ? ? ? ? ?return newImageLoaderConfiguration(this);

? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ?private void ? initEmptyFieldsWithDefaultValues() {

? ? ? ? ? ? ? ? ? ?if(diskCache==null) {

? ? ? ? ? ? ? ? ? ? ? ? ?diskCache= DefaultConfigurationFactory

? ? ? ? .createDiskCache(context,diskCacheFileNameGenerator,diskCacheSize,diskCacheFileCount);

}

? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ?public ?Builder discCache(DiskCache diskCache) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?return ?diskCache(diskCache);

? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ? ? public ? ?Builder ?diskCache(DiskCache diskCache) {

? ? ? ? ? ? ? ? ? ?if(diskCacheSize>0||diskCacheFileCount>0) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?L.w(WARNING_OVERLAP_DISK_CACHE_PARAMS);

}

? ? ? ? ? ? ? ? if(diskCacheFileNameGenerator!=null) {

L.w(WARNING_OVERLAP_DISK_CACHE_NAME_GENERATOR);

? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ? ? ? ? ?this.diskCache= diskCache;

? ? ? ? ? ? ? ? ? ? ? ?return this;

? ? ? ? ? ? }


}



}

使用方法

public static void ?initImageLoader(Context context) {

?ImageLoaderConfiguration.Builder ?config=new ImageLoaderConfiguration.Builder(context);

config.diskCacheFileNameGenerator(new Md5FileNameGenerator());

config.writeDebugLogs();// Remove for release app

?ImageLoader.getInstance().init(config.build());

}

總結(jié):

作用:通常作為配置類的構(gòu)造器將配置的構(gòu)建和表示分離,避免過多的setter方法烫沙,通過鏈?zhǔn)秸{(diào)用

優(yōu)點(diǎn):

1.良好的封裝性匹层,可以使客戶端不比知道產(chǎn)品內(nèi)部組成的細(xì)節(jié)

2.獨(dú)立,容易擴(kuò)展

缺點(diǎn):

1.會(huì)產(chǎn)生多余的Builder對象锌蓄,消耗內(nèi)存

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末升筏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瘸爽,更是在濱河造成了極大的恐慌您访,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灵汪,死亡現(xiàn)場離奇詭異檀训,居然都是意外死亡享言,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門览露,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荧琼,“玉大人,你說我怎么就攤上這事差牛。” “怎么了偏化?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長夹孔。 經(jīng)常有香客問我被盈,道長,這世上最難降的妖魔是什么搭伤? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任只怎,我火速辦了婚禮怜俐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拍鲤。我一直安慰自己,他們只是感情好季稳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仲翎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铛漓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天玫坛,我揣著相機(jī)與錄音包晰,去河邊找鬼湿镀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛肠骆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嘴瓤,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼莉钙,長吁一口氣:“原來是場噩夢啊……” “哼廓脆!你這毒婦竟也來了磁玉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤席赂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后颅停,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡癞揉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年溺欧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姐刁。...
    茶點(diǎn)故事閱讀 38,650評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖胳泉,靈堂內(nèi)的尸體忽然破棺而出岩遗,到底是詐尸還是另有隱情,我是刑警寧澤宿礁,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布蔬芥,位于F島的核電站梆靖,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏返吻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一街佑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沐旨,春花似錦、人聲如沸磁携。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烟央。三九已至,卻和暖如春吊档,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怠硼。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留香璃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓葡秒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親眯牧。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評論 2 349

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理剪个,服務(wù)發(fā)現(xiàn)版确,斷路器乎折,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法侵歇,類相關(guān)的語法骂澄,內(nèi)部類的語法惕虑,繼承相關(guān)的語法坟冲,異常的語法枷遂,線程的語...
    子非魚_t_閱讀 31,598評論 18 399
  • 面向?qū)ο蟮牧笤瓌t 單一職責(zé)原則 所謂職責(zé)是指類變化的原因。如果一個(gè)類有多于一個(gè)的動(dòng)機(jī)被改變矩桂,那么這個(gè)類就具有多于...
    JxMY閱讀 931評論 1 3
  • 本人初學(xué)Android痪伦,最近做了一個(gè)實(shí)現(xiàn)安卓簡單音樂播放功能的播放器侄榴,收獲不少网沾,于是便記錄下來自己的思路與知識(shí)總結(jié)...
    落日柳風(fēng)閱讀 19,097評論 2 41
  • Glide的使用 Glide是google開發(fā)用于Android加載媒體的類庫,包括圖片,gif,video,已經(jīng)...
    敖大膽閱讀 7,783評論 2 17