建造者模式、、、
1、建造者模式
将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。
产品类:
1 package pers.example.demo.design.builder; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 /** 7 * @author gwx 8 */ 9 public class Product { 10 List<String> partList = new ArrayList<>(); 11 12 public void add(String part){ 13 partList.add(part); 14 } 15 public void show(){ 16 for(String s:partList){ 17 System.out.println("我是" + s); 18 } 19 } 20 }
建造者抽象接口:
1 package pers.example.demo.design.builder; 2 3 /** 4 * @author gwx 5 */ 6 public interface Builder { 7 void buildPartA(); 8 void buildPartB(); 9 Product getResult(); 10 }
建造者实现类:
1 package pers.example.demo.design.builder; 2 3 /** 4 * @author gwx 5 */ 6 public class BuilderImplA implements Builder{ 7 private Product product = new Product(); 8 9 @Override 10 public void buildPartA() { 11 product.add("A 的 胳膊"); 12 } 13 14 @Override 15 public void buildPartB() { 16 product.add("A 的 腿"); 17 18 } 19 20 @Override 21 public Product getResult() { 22 return product; 23 } 24 }
1 package pers.example.demo.design.builder; 2 3 /** 4 * @author gwx 5 */ 6 public class BuilderImplB implements Builder{ 7 private Product product = new Product(); 8 @Override 9 public void buildPartA() { 10 product.add("B 的 胳膊"); 11 } 12 13 @Override 14 public void buildPartB() { 15 product.add("B 的腿"); 16 } 17 18 @Override 19 public Product getResult() { 20 return product; 21 } 22 }
指挥者类:
1 package pers.example.demo.design.builder; 2 3 /** 4 * @author gwx 5 */ 6 public class Derector { 7 public static Product build(Builder builder){ 8 builder.buildPartA(); 9 builder.buildPartB(); 10 return builder.getResult(); 11 } 12 }
客户端:
package pers.example.demo.design.builder; /** * @author gwx */ public class Client { public static void main(String[] args) { Product product = Derector.build(new BuilderImplA()); product.show(); product = Derector.build(new BuilderImplB()); product.show(); } }

浙公网安备 33010602011771号