程序员人生 网站导航

Java之建造者模式(Builder Pattern)

栏目:php教程时间:2017-02-07 09:05:36

1.概念

    将1个复杂的构建与其表示相分离,使得一样的构建进程可以创建不同的表示。 [构建与表示分离,同构建不同表示]

    与抽象工厂的区分:在建造者模式里,有个指点者,由指点者来管理建造者,用户是与指点者联系的,指点者联系建造者最后得到产品。即建造模式可以强迫实行1种分步骤进行的建造进程。

  建造模式是将复杂的内部创建封装在内部,对外部调用的人来讲,只需要传入建造者和建造工具,对内部是如何建造成成品的,调用者无需关心。

  举个简单的例子,如汽车,有很多部件,车轮,方向盘,发动机还有各种小零件等等,部件很多,但远不止这些,如何将这些部件装配成1部汽车,这个装配进程也很复杂(需要很好的组装技术), builder模式就是为了将部件和组装分开。

2.UML图

3.代码

复制代码
    public interface Builder { 
    void buildPartA(); 
    void buildPartB(); 
    void buildPartC(); 
  
    Product getResult(); 
  } 

   //具体建造工具
  public class ConcreteBuilder implements Builder { 
    Part partA, partB, partC; 

    public void buildPartA() {
      //这里是具体如何构建partA的代码
    }; 
    public void buildPartB() { 
      //这里是具体如何构建partB的代码
    }; 
     public void buildPartC() { 
      //这里是具体如何构建partB的代码
    }; 
     public Product getResult() { 
      //返回最后组装成品结果
    }; 
  }

   //建造者
  public class Director {
    private Builder builder; 
  
    public Director( Builder builder ) { 
      this.builder = builder; 
    } 
    public void construct() { 
      builder.buildPartA();
      builder.buildPartB();
      builder.buildPartC(); 
    } 
  } 


  public interface Product { }
  public interface Part { }
  
复制代码
    下面是调用builder的方法:
  ConcreteBuilder builder = new ConcreteBuilder();
  Director director = new Director( builder ); 
  
  director.construct(); 
  Product product = builder.getResult();

4.利用场景

在Java的利用中JavaMail使用到了该模式。

学习Java的同学注意了!!! 
学习进程中遇到甚么问题或想获得学习资源的话,欢迎加入Java学习交换群,群号码:183993990  我们1起学Java!

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐