建造者模式(又称生成器模式)将一个复杂对象的构建过程和它的表示分离,从而使一样的构建过程,能够生成不一样的表示。建造者模式将一个复杂对象的构建过程分红一个个简单的步骤,用户只须要了解对象的类型和内容,无须关注复杂对象的构建过程,帮助用户屏蔽掉内部具体的构建细节。建造者模式的结构图以下:java
建造者接口(Builder):Builder接口主要用来定义建造者构建产品对象的各部分的行为设计模式
具体建造者(ConcreteBuilder):具体建造者是用来直接建立产品对象的,具体建造者要实现两类方法,一类是建造方法,例如:buildPart1()、buildPart2(),另外一类是获取建造好的产品对象的方法ide
导演(Director):导演经过调用具体建造者来建立须要的产品对象ui
产品(Product):产品是用户须要的复杂对象this
工厂模式通常都是建立一个产品对象,只须要将产品对象建立出来,不关心产品对象的组成细节和组成过程。spa
建造者模式也是建立一个产品对象,不一样的是建造者模式不只要将产品对象建立出来,还要关心产品对象的组成细节和组成过程。设计
package com.hs.pattern.builder; public class Product { }
package com.hs.pattern.builder; public interface Builder { void buildPart1(); void buildPart2(); Product getProduct(); }
package com.hs.pattern.builder; public class ConcreteBuilder implements Builder { private Product product; @Override public void buildPart1() { // TODO Auto-generated method stub } @Override public void buildPart2() { // TODO Auto-generated method stub } @Override public Product getProduct() { // TODO Auto-generated method stub return product; } }
package com.hs.pattern.builder; public class Director { private Builder builder; public Director( Builder builder ){ this.builder = builder; } public Product builder(){ builder.buildPart1(); builder.buildPart2(); return builder.getProduct(); } }