建造者模式的定义:将一个复杂对象的构造与它的表示分离,使得同样的构造过程可以创建不同的表示。
作用:将复杂的,易出错的创建对象过程进行封装。使用的时候,只需要设置参数,最后再build就可以轻松创建对象。
复杂过程举例:汽车包括方向盘,轮子,发动机等各种部件。构建一辆汽车对象就是一个复制的过程。
易出错举例:一些需要按照一定顺序去构建一个对象。例如一个汉堡,它是有顺序的,最底下放面包,然后放鸡腿,放生菜,再放面包。假如顺序反了,先放生菜,放鸡腿,再放面包,再放面包。这就不是汉堡了。创建的结果就不一样。
下面是需要顺序来创建对象的例子,怎么用使用建造者模式,保证按顺序创建MyData的
以上这个问题要保证设置name时,保证先设置id。我们来实现一下:
public class Test {
public static void main(String[] args){
Test test = new Test();
test.testBuild();
}
private void testBuild() {
MyData myData = new MyBuilder().setId("2").setName("ssz").build();
System.out.print("id的值:"+myData.getId()+" "+"name的值:"+myData.getName());
}
class MyBuilder {
String id;
String name;
public MyData build(){
MyData myData = new MyData();
myData.setId(id);
myData.setName(name);
return myData;
}
public MyBuilder setId(String id){
this.id=id;
return this;
}
public MyBuilder setName(String name){
this.name=name;
return this;
}
}
class MyData {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name+id;//设置name,需要先设置id为前提。
}
}
}
总之,建造者模式,就是把复杂,易出错的进行封装。便于创建对象。
我的博客:http://blog.csdn.NET/shenshizhong
我的简书:http://www.jianshu.com/users/345daf0211ad/latest_articles