设计模式4-生成器(建造者)模式

定义

建造者模式经常使用到,其功能在于将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

主要解决在软件系统中,有时候面临着”一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。

建造者模式解决了一个就是多态导致的构造类过多的问题

实现

生成器模式的实现还是多种多样的,其核心思想在于参数隔离,每一个参数或者说参数维度,用一个方法单独表示,在所有参数完备之后进行参数的组装。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
private GlideRequest<Bitmap> with(Object host) {
GlideRequests requests;
if (host == null) {
requests = GlideApp.with(ContextUtil.getContext());

} else if (host instanceof Fragment) {
// 解决未添加或者已经销毁时,造成的bug
if (!((Fragment) host).isAdded() && ((Fragment) host).isDetached()) {
requests = GlideApp.with(ContextUtil.getContext());

} else {
requests = GlideApp.with((Fragment) host);
}

} else if (host instanceof View) {
requests = GlideApp.with((View) host);

} else if (host instanceof FragmentActivity) {
requests = GlideApp.with((FragmentActivity) host);

} else if (host instanceof Activity) {
requests = GlideApp.with((Activity) host);

} else if (host instanceof Context) {
requests = GlideApp.with((Context) host);

} else {
requests = GlideApp.with(ContextUtil.getContext());
}
return requests
.asBitmap()
.format(DecodeFormat.PREFER_RGB_565)
.diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
.dontAnimate();
}

一段比较普通的glide写法,最后的requests的构造,其实就是很常规的构造模式。