在看Glide代码的时候看到了GlideExecutor这个类,它主要为Glide提供4种创建线程池的方式,实现的方式和Java里面的Executors是一样的,都是通过代理模式+ExecutorService来实现。
既然是代理模式,那么代理类和被代理对象就会实现一个相同的接口,在这里这个接口就是ExecutorService,代理类就是GlideExecutor,被代理对象就是传进来的delegate这个对象。被代理对象主要通过ThreadPoolExecutor来创建的,创建的四种方式如下:
1、第一种方式
image2、第二种方式
image3、第三种方式
image4、第四种方式
image这些方式创建的代理对象都会通过代理类的构造方法传进来,然后在代理类里面进行调用。
另外,在创建newAnimationExecutor这个代理对象的时候有个很好用的方法,日后可以借鉴使用,获取cpu的个数
calculateBestThreadCount
image通过这个例子深入的理解代理模式之后,在以后遇到对象类型有多个,但是做的事情可以用一个类来统一代理,那GlideExecutor这种实现方式的思想就是很好的选择。
Goach的开发日记.jpg
网友评论