构建器模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建器模式相关的知识,希望对你有一定的参考价值。
*构建器模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类图如下:
*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 }
总结:
构建器模式的本质就是分离整体构建算法和部件构造,使产品构建过程与具体产品表现松耦合。
构建器模式主要功能是构建复杂产品,而且是细化的、分步骤的构建产品。这个构建过程是统一的、固定不变的,它把变化的过程放到了具体构建器里,只要实现不同的生成器,相同的构建过程就可以构建出的不同的产品。
以上是关于构建器模式的主要内容,如果未能解决你的问题,请参考以下文章