首页 > 代码库 > 构建器模式

构建器模式

 *构建器模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类图如下:

技术分享

 *product产品类:表示被构建器构建的复杂对象,包含多个部件。

1 //产品接口 示意性产品,所以没有任何方法
2 public interface Product{    
3 }

 *builder构建器接口:定义创建一个product对象所需要的各个部件的操作。

1 //生成器接口
2 public interface Builder{
3     public void builderPart1();
4     public void builderPart2();
5     public Product getResult();
6 }

*concretebuilder具体的构建器:实现各个部件的创建,并负责组装product对象的各个部件,同时还提供一个让用户获取组装完成后的产品对象的方法。**具体的构建部件方法要由此角色来实现。

 1 //具体构建器
 2 public class ConcreteBuilder implements Builder{
 3     private Product resultProduct = new Product(){};//示意性产品这里用匿名对象表示
 4     @Override
 5     public Product getResult(){
 6         return resultProduct;
 7     }
 8     @Override
 9     public void builderPart1() {
10         //构建部件1具体方法
11     }    
12     @Override
13     public void builderPart2() {
14         //构建部件2具体方法
15     }    
16 }

 *director指导者:主要来使用builder接口,以一个统一的过程来构建所需要的product对象。**构建算法要由此角色来实现。

 1 //指导者
 2 public class Director{
 3     private Builder builder;
 4     //注入构建器对象
 5     public Director(Builder builder){
 6         this.builder = builder;
 7     }
 8     //指导构建器构建产品,这里实现构建步骤的算法(本例是按part1、part2顺序,实际场景中会复杂得多)
 9     public void construct(){
10         builder.builderPart1();
11         builder.builderPart2();
12     }
13     public Product getProduct(){
14         return builder.getResult();
15     }
16 }

客户端代码:

1 public class Client {
2     public static void main(String[] args) {
3         Builder builder = new ConcreteBuilder();
4         Director director = new Director(builder);
5         director.construct();
6         Product product = director.getProduct();
7     }
8 }

总结:

  构建器模式的本质就是分离整体构建算法和部件构造,使产品构建过程与具体产品表现松耦合。
    构建器模式主要功能是构建复杂产品,而且是细化的、分步骤的构建产品。这个构建过程是统一的、固定不变的,它把变化的过程放到了具体构建器里,只要实现不同的生成器,相同的构建过程就可以构建出的不同的产品。

构建器模式