自由扩展你的项目——Builder模式
Builder模式的定义
将一个复杂对象的构建与它的表示分离,使得同样的创建过程可以创建不同的表示。
Builder模式的使用场景
(1)相同的方法,不同的执行顺序,产生不同的事件结果时。
(2)多个部件或零件,都可以装配到一个对象中,但是产生的运行结果有不相同时。
(3)产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用时。
(4)当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值时,大部分使用建造者模式是在这种场景。
Builder模式示例
Computer.class
public class Computer {
private String board;
private String display;
private String os;
Computer() { }
//设置主板
public void setBoard(String board) {
this.board = board;
}
//设置显示器
public void setDisplay(String display) {
this.display = display;
}
//设置操作系统
public void setOS(String os) {
this.os = os;
}
}
ComputerBuilder.class
public class ComputerBuilder {
private Computer computer = new Computer();
//设置主机
public ComputerBuilder buildBoard(String board){
computer.setBoard(board);
return this;
}
//设置显示器
public ComputerBuilder buildDisplay(String display) {
computer.setDisplay(display);
return this;
}
//设置操作系统
public ComputerBuilder buildOS(String os){
computer.setOS(os);
return this;
}
//创建Computer
public Computer create() {
return computer;
}
}
调用:
ComputerBuilder computerBuilder = new ComputerBuilder();
Computer myComputer = computerBuilder.buildBoard("英特尔主板")
.buildDisplay("不知道什么牌子的显示器")
.buildOS("Windows10")
.create();
小结
Builder模式在Android开发中比较常用,通常作为配置类的构建器将配置的构建和表示分离开来,同时也是将配置从目标中隔离出来,避免过多的setter方法。Builder模式比较常见的实现形式是通过调用链实现,这样使得代码更简洁、易懂。
优点
(1)良好的封装性,使用建造者模式可以使客户端不必知道产品内部组成的细节。
(2)建造者独立,容易扩展。
缺点
会产生多余的Builder对象,消耗内存。不过这个缺点好像可以忽略了吧,那都不是事。