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

概念:

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

UML:

    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派生类方法,也可以实现类似的生成器功能。

           

代码演示:

//定义抽象生成器
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();
        }
}

 

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

 

 

     

 

 

     

                 

       

 

posted @ 2016-02-24 14:06  zhuyuliang  阅读(3858)  评论(0编辑  收藏  举报