建造模式(Builder)
一个对象的内部有很多部件组成,在建造的过程中分割进行建造。可简化为模版方法模式.
- public class TestBuilder {
- public static void main(String[] args) {
- Builder b1=new BuilderImpl1();
- Builder b2=new BuilderImpl2();
- Director d=new Director();
- d.construct(b1);//指挥用BuilderImpl1来建造
- d.construct(b2);//指挥用BuilderImpl2来建造
- Product p1=b1.createProduct();
- Product p2=b2.createProduct();
- }
- }
- //建造的接口
- interface Builder{
- //方法1
- void buildPart1();
- //方法2
- void buildPart2();
- //方法3
- void buildPart3();
- //方法4
- Product getProduct();
- }
- //实现了建造的接口,第一种建造方式
- class BuilderImpl1 implements Builder{
- private ProductProduct p=new Product();
- //方法1
- public void buildPart1() { //建造具体部件a
- System.out.println("create part1");
- p.add("添加a部件");
- }
- //方法2
- public void buildPart2() { //建造具体部件b
- System.out.println("create part2");
- p.add("添加b部件");
- }
- //方法3
- public void buildPart3() { //建造具体部件c
- System.out.println("create part3");
- p.add("添加c部件");
- }
- //方法4
- public Product getProduct() {
- return p;
- }
- }
-
- //实现了建造的接口,第二种建造方式
- class BuilderImpl2 implements Builder{
- private ProductProduct p=new Product();
- //方法1
- public void buildPart1() { //建造具体部件a
- System.out.println("create part1");
- p.add("添加x部件");
- }
- //方法2
- public void buildPart2() { //建造具体部件b
- System.out.println("create part2");
- p.add("添加y部件");
- }
- //方法3
- public void buildPart3() { //建造具体部件c
- System.out.println("create part3");
- p.add("添加z部件");
- }
- //方法4
- public Product getProduct() {
- return p;
- }
- }
- //Director类
- class Director{
- public construct(Builder b){ //用来指挥建造过程
- b.buildPart1(); b.buildPart2();
- b.buildPart3();
- }
- }
- class Product{
- list<String> part=newarraylist<String>();
- public void add(String parts){
- part.add(parts);
- }