Pri*_*eja 10 java design-patterns
public class Employee {
private String name;
private String address;
private int id;
public Employee() {
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Employee [name=" + name + ", address=" + address + ", id=" + id + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
public class Main {
public static void main(String[] args) {
Employee e = new Employee();
e.setName("Priyanka");
Employee e1 = new Employee();
e1.setName("Rahul");
e1.setAddress("Delhi");
System.out.println("Value of e :"+ e);
System.out.println("Value of e1:"+ e1);
}
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*INO 23
构建器模式可用于:
关于使用构建器创建不可变对象的说明。
在多线程环境中工作时,可以在线程之间共享不可变对象,而无需显式同步。因为对象在这段时间内无法更改,所以不可能使竞争条件同时由两个线程访问和修改。
无需使用任何模式。您甚至可以通过将变量公开来避免设置方法。然而,
Builder设计模式的目的是将复杂对象的构造与其表示分离
资料来源:https : //en.wikipedia.org/wiki/Builder_pattern
使用构建器模式有一些优点:
与使用setter(使您的类可变)不同,可以使用构建器构造不可变的对象。在许多情况下,不可变对象比可变对象更可取,因为它们易于理解和维护,并且避免了在多线程环境中锁定的需求。
建造者可以确保对象即使在构造后也能满足一些不变性。例如,如果您的类具有一个name必须从不为的字段null,则构建器可以检查此条件,并在不满足要求时无法构造该对象。
通过使用将所有类内容作为参数的构造函数,您也可以完成这两件事,但是当您的类具有多个要初始化的字段时,这将是非常不可读的。
| 归档时间: |
|
| 查看次数: |
995 次 |
| 最近记录: |