版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38361347/article/details/85094749
java设计模式之建造者模式
建造者模式也属于创建型模式之一,也是用来创建对象的。
建造者模式就是一步一步的创建一个复杂的对象,建一个复杂的对象与其表示分离,使得同样的构建可以创建不同的表示。
建造过程中可以分为三个角色:
建造角色:定义生成实例对象需要的方法;
具体的建造的角色:实现生成实例所需要的所有方法,并且生成获取最终实例对象的方法;
监工角色:有监工定义并且调用具体的建造的角色中生成实例对象的方法;
使用者:使用这个模式。
实例对象类
//产品类
public class Product {
private String name1;
private String name2;
private String name3;
public String getName1() {
return name1;
}
public void setName1(String name1) {
this.name1 = name1;
}
public String getName2() {
return name2;
}
public void setName2(String name2) {
this.name2 = name2;
}
public String getName3() {
return name3;
}
public void setName3(String name3) {
this.name3 = name3;
}
}
建造者角色
//建造者抽象类
public abstract class Build {
abstract void build1();
abstract void build2();
abstract void build3();
//需要构建的产品对象
protected Product product = new Product();
public void setProduct(Product product) {
this.product = product;
}
//用来返回建造后的product对象
public Product getResult(){
return product;
}
}
具体的建造的角色
//实现类,对product属性字段分别设置值
public class ConcreteBuilder extends Build {
@Override
void build1() {
product.setName1("nam1....");
}
@Override
void build2() {
product.setName2("nam2....");
}
@Override
void build3() {
product.setName3("nam3....");
}
}
监工角色
//指挥类 来指挥各个部件的创造,并且将组装好的产品返回给客户端。
public class Director {
private Build build;
public Director(Build build){
this.build=build;
}
public void setBuild(Build build) {
this.build = build;
}
//对外提供结果集
public Product getProcuct(){
//开始建造
build.build1();
build.build2();
build.build3();
//调用 建造的结果对象
return build.getResult();
}
}
使用者
//测试建造者模式
public static void main(String[] args) {
//创建产品
Build build = new ConcreteBuilder();
//指挥每个零部件的创建
Director director = new Director(build);
Product procuct = director.getProcuct();
System.out.println(procuct.getName1());
System.out.println(procuct.getName2());
System.out.println(procuct.getName3());
}
建造者模式侧重于将各个 部件组装成一个产品,返回最终的对象实例!