概述
建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部
是如何建造成成品的,调用者无需关心。
建造模式的步骤
1,首先是一个建造工具(builder)接口
package com.eddy.test.builder; /** * Created by eddy on 2015/10/16. */ public interface Builder { //创建部件A 比如创建汽车车轮 void buildPartA(); //创建部件B 比如创建汽车方向盘 void buildPartB(); //创建部件C 比如创建汽车发动机 void buildPartC(); Product getResult(); //返回这个产品 }
package com.eddy.test.builder; /** * Created by eddy on 2015/10/16. */ public class Product { private String buildPartABC; public Product(String buildPartABC) { this.buildPartABC = buildPartABC; } public String getBuildPartABC() { return buildPartABC; } }
2,然后就是建造者Director接口,建造者利用建造工具(builder)进行创建产品(construct方法)
package com.eddy.test.builder; /** * Created by eddy on 2015/10/16. */ public class Director { private Builder builder; public Director( Builder builder ) { this.builder = builder; } // 将部件partA partB partC最后组成复杂对象 //这里是将车轮 方向盘和发动机组装成汽车的过程 public void construct() { builder.buildPartA(); builder.buildPartB(); builder.buildPartC(); } }
3,其实现类
package com.eddy.test.builder; /** * Created by eddy on 2015/10/16. */ public class ConcreteBuilder implements Builder { @Override public void buildPartA() { System.out.println("buildPartA"); } @Override public void buildPartB() { System.out.println("buildPartB"); } @Override public void buildPartC() { System.out.println("buildPartC"); } @Override public Product getResult() { return new Product("buildPartABC"); } public static void main(String[] args){ //创建一个建造工具 ConcreteBuilder concreteBuilder = new ConcreteBuilder(); //创建(建造者)并把建造工具拿给建造者 Director director = new Director(concreteBuilder); //建造者利用工具进行建造 director.construct(); //取得产品 Product result = concreteBuilder.getResult(); System.out.println(result.getBuildPartABC()); } }
输出结果:
buildPartA
buildPartB
buildPartC
buildPartABC
浙公网安备 33010602011771号