概述
建造者模式又称为生成器模式,是一种较为复杂,使用频率也相对较低的创建型模式。建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品。客户端无需知道复杂对象的内部组成部分与装配部分,只需知道所需的创建者类型即可。
建造者模式关注如何一步一步得创建一个复杂对象,不同的具体建造者定义了不同的创建过程,且具体建造者相互独立,增加新的建造者很方便吗无需修改已有代码,系统具有良好的扩展性。
定义
将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。
Pit.java
package main.java.BuilderPatterns;
import java.util.Date;
/**
* DateTime: 2016/10/23 14:01
* 功能:
* 思路:
*/
public class Pit {
/**
* Builder类的唯一职责就是创建Pit对象
*/
public static class Builder{
private Integer age;
private String name;
private Date times;
private Character sex;
public Builder withAge(final Integer age){
this.age=age;
return this;
}
public Builder withName(final String name){
this.name=name;
return this;
}
public Builder withTimes(final Date times){
this.times=times;
return this;
}
public Builder withSex(final Character sex){
this.sex=sex;
return this;
}
public Pit build(){
if(age==null || name==null || times==null || sex==null){
throw new IllegalStateException("can not creat pet");
}
return new Pit(age,name,times,sex);
}
}
private Integer age;
private String name;
private Date times;
private Character sex;
private Pit(final Integer age,final String name,final Date times,final Character sex){
this.age=age;
this.name=name;
this.times=times;
this.sex=sex;
}
}
LegalBuild.java
package main.java.BuilderPatterns;
import java.util.Date;
/**
* DateTime: 2016/10/23 14:10
* 功能:
* 思路:
*/
public class LegalBuild {
public static void main(String[] args) {
final Pit.Builder builder=new Pit.Builder();
final Pit pit=builder.withAge(20).withName("C").withTimes(new Date(1996/9/20)).withSex('女').build();
}
}
对程序进行调试 过程中可以看到:
运行结束时: