学习路径:https://coding.imooc.com/learn/list/270.html
应用场景
对生成对象进行链式配置
好处:按需配置对象,灵活修改默认配置,比构造方法创建对象更直观。
public static void init() { if (okHttpClient == null) { OkHttpClient.Builder builder = new OkHttpClient.Builder() .connectTimeout(5000, TimeUnit.MILLISECONDS) .connectTimeout(5000, TimeUnit.MILLISECONDS) .writeTimeout(5000, TimeUnit.MILLISECONDS); okHttpClient = builder.build(); } }
实现过程
1.创建目标对象Course
2.创建目标对象的【建造者】内部类
3.内部类拥有Course的同名成员变量,并提供build()方法返回Course对象,这里直接使用构造方法构造。
// 内部类处理应用层传入的参数 public static class CourseBuilder{ private String courseName; private String coursePPT; // build()返回Course,用作链式调用的最后一步 public Course build() { // 需要建立一个参数为CourseBudiler的构造方法 return new Course(this); } // public CourseBuilder buildCourseName(String courseName) { this.courseName = courseName; return this; } public CourseBuilder buildCoursePPT(String coursePPT) { this.coursePPT = coursePPT; return this; } }
// 应用层.build()后调用该构造方法 public Course(CourseBuilder courseBuilder) { this.courseName = courseBuilder.courseName; this.coursePPT = courseBuilder.coursePPT; }
原文:https://blog.csdn.net/chenghan_yang/article/details/90411573