Builder模式介绍
- Builder模式时一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建的过程和部件都可以自由扩展,两者之间的耦合页降到最低。
Builder模式的使用场景
- 相同的方法,不同的执行顺序,产生不同的事件结果时。
- 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时。
- 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用,这个时候使用建造者模式非常合适。
- 当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值时。
优点:
1.良好的封装性,隐藏实现的细节;
2.建造者独立,容易扩展。
缺点:
会产生多余的对象,消耗内存。
以上描述来自《Android源码设计模式解析与实战》
了解定义之后看一下简单实现,其实Android源码中有很多的例子,常见的就是Dialog,Notification,这些就由读者自行查看了。
public class AlertDialog {
private Builder mBuilder;
private AlertDialog(){
}
private AlertDialog(Builder builder) {
this.mBuilder = builder;
}
public class Builder {
private String mTitle;
private String mContent;
public Builder setTitle(String title) {
this.mTitle = title;
return this;
}
public String getTitle() {
return mTitle;
}
public Builder setContent(String content) {
this.mContent = content;
return this;
}
public String getContent() {
return mContent;
}
public AlertDialog build() {
return new AlertDialog(this);
}
}
}
//调用的话也很简单了
AlertDialog dialog = new AlertDialog.Builder()
.setTitle("title")
.setContent("Content")
.build();