建造者模式
建造者模式就时将对象的创建和对象的属性分开。也可以算又套了一层。
介绍
将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。(大多数都看不懂,使用场景和方式见下方。)
使用场景
一个对象有多个属性(一般大于四个),创建时需要填写一些必选项和一些可选项。
使用
Java使用由两种方式,如果使用Lombok插件的话在类图上添加@Builder注解即可。缺点是不能限制必须设置某些属性。代码如下:
@Builder
public class Computer {
private String cpu;
private String ram;
private int usbCount;
private String keyboard;
private String display;
}
//使用方式如下:
class Test{
public static void main(String[] args) {
//可以设置任意数量的属性值
Computer computer = Computer.builder()
.cpu("cpu")
.display("display")
.build();
}
}
如不使用Lombok自己手写,代码如下:
来自:秒懂设计模式之建造者模式
public class Computer {
private final String cpu;//必须
private final String ram;//必须
private final int usbCount;//可选
private final String keyboard;//可选
private final String display;//可选
private Computer(Builder builder){
this.cpu=builder.cpu;
this.ram=builder.ram;
this.usbCount=builder.usbCount;
this.keyboard=builder.keyboard;
this.display=builder.display;
}
//省略getter
...
public static class Builder{
private String cpu;//必须
private String ram;//必须
private int usbCount;//可选
private String keyboard;//可选
private String display;//可选
public Builder(String cup,String ram){
this.cpu=cup;
this.ram=ram;
}
public Builder setUsbCount(int usbCount) {
this.usbCount = usbCount;
return this;
}
public Builder setKeyboard(String keyboard) {
this.keyboard = keyboard;
return this;
}
public Builder setDisplay(String display) {
this.display = display;
return this;
}
public Computer build(){
return new Computer(this);
}
}
}
//创建
Computer computer=new Computer.Builder("因特尔","三星")
.setDisplay("三星24寸")
.setKeyboard("罗技")
.setUsbCount(2)
.build();
建造者模式是一种设计模式,它将对象的构建与表示分离,使得创建不同表示的复杂对象变得简单。适用于对象有多个属性且部分属性可选的情况。在Java中,可以使用Lombok的@Builder注解简化代码,或者手动实现Builder类来控制对象构建。通过Builder类,可以按需设置对象属性并调用build()方法完成对象创建。

789

被折叠的 条评论
为什么被折叠?



