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();
        }
}

 

總之,對於生成器模式創建復雜對象而言,主要原則是對象構造過程與表示相分離。

 

 

     

 

 

     

                 

       

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM