Glide源代码设计小结

使用Glide.with().load.into()
就像一个自然语言一样,描述了一个事情。
那么它的代码的内部是不是也是像自然语言一样描述了一个事情呢?

分解Glide.with();做了什么事情?
调用Glide.with() 返回的RequestManager。
调用RequestManager.load()返回的Request
调用Request.into()返回的

于是我们对设计进行自然语言的翻译
Glide with () load () into ()
Glide with在界面里(Activity/Fragment) 里加载一个图片(url) into到一个图片控件里(ImageView)

是的,我需要做一个请求的管理。我想到了RequestManager 将负责管理这一些请求的事情。
因为我的请求是依赖在界面Activity或是某个View上的,我想,我在创建这样的管理者,是应该同样依赖于它们的。所以,我在创建RequestManager时候要求有一个参数,能够使我获得对它们的依赖

那么,我将要依赖谁呢,在这里,我列出它们将会在什么场景下被使用
它在一个View被使用
Activity里被使用
Fragment里被使用
兼容版本的Fragment被使用,见鬼的,我还要兼容低版
View里也可能被使用
哦,我要做的东西太多了,最终我还是一人承担了所有,所以,伟大了。

是的,我依赖了场景,创建了RequestManger管理者,后面要开始工作了

像生产一样,我需要一个材料
于是我大声喊,给我一个指引,告诉我去哪里拉图片。
他给了一个,见鬼的,图片的指引地址也是千奇百怪。好的,交给我们处理吧
我还是再问一下,告诉我,这个拉回来的图片放在哪里。
他给了一个,美妙的,这个地方只有一个ImageView。我要做的工作少极了。

这是我的基本处理了
分三步
1.告诉我,我在哪里,现场是什么环境?
2.告诉我,我去哪里拉图片?
3.告诉我,拉回来的图片放哪儿?

我就是这样,完成了。

你能看得明白这里的设计分解吗

针对一种这样的场景,需要加载(异步)一类数据,然交给目标处理(显示/储存)
with.load.save

你可能感兴趣的:(Glide源代码设计小结)