Java设计模式-Builder生成器模式

时间:2023-01-13 15:37:32

概念:

  生成器模式也称之为建造者模式。生成器模式的意图在于将一个复杂的构建与其表示相分离,构建与产品分离。

UML:

Java设计模式-Builder生成器模式

    Ibuild接口清晰地反映了创建产品Product的流程。

    生成器模式涉及4个关键角色:产品(Product),抽象生成器(IBuilder),具体生成器(Builder),指挥者(Director).

代码演示:

(1)定义1个产品类

public class Unit1{...}
public class Unit2{...}
public class Unit3{...}
public class Product
{
Unit1 u1;
Unit2 u2;
Unit3 u3;
}

  (2)定义n个生成器Builder类

public interface IBuild
{
public void createUnit1();
public void createUnit2();
public void createUnit3();
public Product composite();
public Product create();
} public class BuildProduct implements IBuild
{
Product p = new Product();
public void createUnit1(){
//p.u1 = ...
}
public Product create(){
return composite();
}
......
} public class BuildProduct1 implements IBuild
{
Product p = new Product();
public void createUnit1(){
//p.u1 = ...
}
......
}

  (3)定义一个统一调度类也叫指挥者(Director).是对生成器接口IBuilder的封装。

public class Director
{
private IBuild build;
public Director(IBuild build){
this.build = buid;
}
public Product build(){
build.create();
}
public static void main(){
IBuild build = new BuildProduct();
Director direcotr = new Director(build);
Prodcut p = director.build();
}
}

另一种实现方式:

      利用Product1派生类方法,也可以实现类似的生成器功能。

Java设计模式-Builder生成器模式

代码演示:

//定义抽象生成器
public abstract class Product
{
Unit1 u1;
Unit2 u2;
....
abstract void createUnit1();
abstract void createUnit2();
...
abstract void composite();
} //定义具体生成器
public class BuildProduct extends Product
{
void createUnit1() { u1=.... }
....
void composite(){ /*关联 u1, u2, u3*/}
} //定义指挥者类
public class Director
{
Product p;
public Director(Product p)
{
this.p = p;
}
void build()
{
p.createUnit1();
p.createUnit2();
....
p.composite();
}
}

总之,对于生成器模式创建复杂对象而言,主要原则是对象构造过程与表示相分离。