使用Glide.with().load.into()
就像一個(gè)自然語(yǔ)言一樣,描述了一個(gè)事情。
那么它的代碼的內(nèi)部是不是也是像自然語(yǔ)言一樣描述了一個(gè)事情呢?
分解Glide.with();做了什么事情?
調(diào)用Glide.with() 返回的RequestManager。
調(diào)用RequestManager.load()返回的Request
調(diào)用Request.into()返回的
于是我們對(duì)設(shè)計(jì)進(jìn)行自然語(yǔ)言的翻譯
Glide with () load () into ()
Glide with在界面里(Activity/Fragment) 里加載一個(gè)圖片(url) into到一個(gè)圖片控件里(ImageView)
是的,我需要做一個(gè)請(qǐng)求的管理。我想到了RequestManager 將負(fù)責(zé)管理這一些請(qǐng)求的事情。
因?yàn)槲业恼?qǐng)求是依賴在界面Activity或是某個(gè)View上的,我想,我在創(chuàng)建這樣的管理者,是應(yīng)該同樣依賴于它們的。所以,我在創(chuàng)建RequestManager時(shí)候要求有一個(gè)參數(shù),能夠使我獲得對(duì)它們的依賴
那么,我將要依賴誰(shuí)呢,在這里,我列出它們將會(huì)在什么場(chǎng)景下被使用
它在一個(gè)View被使用
Activity里被使用
Fragment里被使用
兼容版本的Fragment被使用,見(jiàn)鬼的,我還要兼容低版
View里也可能被使用
哦,我要做的東西太多了,最終我還是一人承擔(dān)了所有,所以,偉大了。
是的,我依賴了場(chǎng)景,創(chuàng)建了RequestManger管理者,后面要開(kāi)始工作了
像生產(chǎn)一樣,我需要一個(gè)材料
于是我大聲喊,給我一個(gè)指引,告訴我去哪里拉圖片。
他給了一個(gè),見(jiàn)鬼的,圖片的指引地址也是千奇百怪。好的,交給我們處理吧
我還是再問(wèn)一下,告訴我,這個(gè)拉回來(lái)的圖片放在哪里。
他給了一個(gè),美妙的,這個(gè)地方只有一個(gè)ImageView。我要做的工作少極了。
這是我的基本處理了
分三步
1.告訴我,我在哪里,現(xiàn)場(chǎng)是什么環(huán)境?
2.告訴我,我去哪里拉圖片?
3.告訴我,拉回來(lái)的圖片放哪兒?
我就是這樣,完成了。
你能看得明白這里的設(shè)計(jì)分解嗎
針對(duì)一種這樣的場(chǎng)景,需要加載(異步)一類數(shù)據(jù),然交給目標(biāo)處理(顯示/儲(chǔ)存)
with.load.save