定义
建造者模式经常使用到,其功能在于将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
主要解决在软件系统中,有时候面临着”一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
建造者模式解决了一个就是多态导致的构造类过多的问题
实现
生成器模式的实现还是多种多样的,其核心思想在于参数隔离,每一个参数或者说参数维度,用一个方法单独表示,在所有参数完备之后进行参数的组装。
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的构造,其实就是很常规的构造模式。