我只是想了解这行代码发生了什么
Phone ph=new PhoneBuilder().setOs("android").setRam("2").get();
以及该行的工作原理。以及为什么我们在“Phone ph”引用变量中分配两个对象,因为 PhoneBuilder 类方法返回其对象。抱歉我的英语不好。
public class MakePhone {
public static void main(String args[]){
Phone ph=new PhoneBuilder().setOs("android").setRam("2").get();
System.out.println(ph);
}
}
public class Phone {
String os,ram,storage,processor;
public Phone(String os, String ram, String storage, String processor){
this.os=os;
this.ram=ram;
this.storage=storage;
this.processor=processor;
}
@Override
public String toString() {
return "Os"+os+",Ram"+ram+",Storage"+storage+"Processor"+"" ;
}
}
public class PhoneBuilder {
String os,ram,storage,processor;
public PhoneBuilder setOs(String os) {
this.os = os;
return this;
}
public PhoneBuilder setRam(String ram) {
this.ram = ram;
return this;
}
public PhoneBuilder setStorage(String storage) {
this.storage = storage;
System.out.println(this);
return this;
}
public PhoneBuilder setProcessor(String processor) {
this.processor = processor;
return this;
}
public Phone get(){
return new Phone(os, ram, storage, processor);
}
}
最佳答案
获取有问题的构建器代码行:
Phone ph = new PhoneBuilder()
.setOs("android") // sets the OS and returns a reference to the builder
.setRam("2") // sets the RAM and also returns a reference
.get(); // calls the constructor for a Phone
我们可以看到,构建器模式的工作原理是首先使用我们想要创建 Phone
对象的所有属性填充 PhoneBuilder
POJO 对象。我们通过方法链接以紧凑的方式做到这一点,这是有效的,因为每个构建器 setter 方法都会返回对同一构建器对象的引用。然后,最后,我们调用 get()
创建一个新的 Phone
实例。
当 Java 类可能具有许多不同类型的潜在构造函数时,构建器模式非常有用。与其通过实际创建许多不同的构造函数来满足这一要求,这可能会成为维护的噩梦,而使用构建器模式,我们理论上只需要一次构造函数调用。
关于java - 我对java的Builder Design模式代码有点困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59798224/