设计模式 建造者模式
建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。
建造者模式和工厂模式的关注点不同:建造者模式注重零部件的组装过程,而工厂方法模式更注重零部件的创建过程,但两者可以结合使用。
public class Builder {
private BuilderClass builderClass;
public Builder(BuilderClass builderClass) {
this.builderClass = builderClass;
}
public BuilderTeacher construct() {
this.builderClass.buildName();
this.builderClass.buildAge();
this.builderClass.buildClassName();
return this.builderClass.getTeacher();
}
}
public class BuilderTeacher {
private String name;
private Integer age;
private String className;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
@Override
public String toString() {
return "BuilderTeacher [name=" + name + ", age=" + age + ", className=" + className + "]";
}
}
public abstract class BuilderClass {
public BuilderTeacher teacher = new BuilderTeacher();
public abstract void buildName();
public abstract void buildAge();
public abstract void buildClassName();
public BuilderTeacher getTeacher() {
return teacher;
}
}
public class BuilderClassSunflower extends BuilderClass{
@Override
public void buildName() {
teacher.setName("石坂绿");
}
@Override
public void buildAge() {
teacher.setAge(24);
}
@Override
public void buildClassName() {
teacher.setClassName("双叶幼稚园向日葵班");
}
}