安卓常用的设计模式
建造者模式也被称为生成器模式,Builder模式,它是创建一个复杂对象的创建型模式,其将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示分离开来。
建造者模式
Builder模式{使用powerdesigner构建}在DIY一台台式电脑的时候,CPU可以是Intel家的,也可以是Amd家的,可以是Intel的I5,I7,I8,i9,也可以是Amd家的锐龙5,锐龙7,锐龙9,显卡可以是英伟达家的,也可以是AMD家的,内存可以是8g的,也可以是16g的,也可以是32g的,硬盘可以是固态的,也可以是机械的,我们不需要知道这台电脑是怎么组装起来的,但是我们可以变化着各种零件型号来组成我们的电脑。类似的需求,我们就可以使用Builder模式来完成设计。
Builder:抽象的制造者,规范产品的制造,具体实现是由子类实现
ComputerBuilder:具体建造者,实现抽象Builder类定义的所有方法,并且返回一个组建好的对象
Director:导演类,负责安排已有模块的顺序,然后通知Builder开始建造
Computer
public class Computer {
private String cpu;
private String gpu;
private String ram;
private String disk;
public String getCpu() {
return cpu;
}
public void setCpu(String newCpu) {
cpu = newCpu;
}
public String getGpu() {
return gpu;
}
public void setGpu(String newGpu) {
gpu = newGpu;
}
public String getRam() {
return ram;
}
public void setRam(String newRam) {
ram = newRam;
}
public String getDisk() {
return disk;
}
public void setDisk(String newDisk) {
disk = newDisk;
}
}
Builder
public abstract class Builder {
public abstract void buildCpu(String cpu);
public abstract void buildGpu(String gpu);
public abstract void buildRam(String ram);
public abstract void buildDisk(String disk);
public abstract Computer create();
}
具体的builder--ComputerBuilder
public class ComputerBuilder extends Builder {
private Computer computer=new Computer();
@Override
public void buildCpu(String cpu) {
computer.setCpu(cpu);
}
@Override
public void buildGpu(String gpu) {
computer.setCpu(gpu);
}
@Override
public void buildRam(String ram) {
computer.setCpu(ram);
}
@Override
public void buildDisk(String disk) {
computer.setCpu(disk);
}
@Override
public Computer create() {
return computer;
}
}
导演类
public class Director {
public Builder builder=null;
public Director(Builder builder) {
this.builder=builder;
}
public Computer createComputer(String cpu,String gpu,String ram,String disk) {
builder.buildCpu(cpu);
builder.buildGpu(gpu);
builder.buildRam(ram);
builder.buildDisk(disk);
return builder.create();
}
}
参考引用
- https://www.runoob.com/design-pattern/builder-pattern.html
- 刘望舒《Android进阶之光》-JD_ebook
网友评论