建造者模式
属于创建者模式
建造者模式将一个复杂对象的构建和对象分离,实现解耦;
比如一辆汽车的创建,需要一整套过程和很多的部件,建造者模式实现了将部件和过程分离
为什么使用建造者模式
是为了将创建一个复杂对象的过程与它的属性解耦
使用建造者模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| public class Product { @Override public String toString() { return "Product{" + "wheel='" + wheel + '\'' + ", engine='" + engine + '\'' + ", chassis='" + chassis + '\'' + '}'; } private String wheel; private String engine; private String chassis; public String getWheel() { return wheel;} public void setWheel(String wheel) {this.wheel = wheel; } public String getEngine() { return engine;} public void setEngine(String engine) { this.engine = engine;} public String getChassis() { return chassis; } public void setChassis(String chassis) { this.chassis = chassis; } }
public interface Builder { void buildPartA(); void buildPartB(); void buildPartC(); Product getResult(); }
public class ConcreteBuilder implements Builder { private Product product; public ConcreteBuilder() { this.product = new Product(); } @Override public void buildPartA() {product.setWheel(new String("米其林轮胎")); } @Override public void buildPartB() {product.setEngine(new String("三菱发动机")); } @Override public void buildPartC() {product.setChassis(new String("宝马底盘")); } @Override public Product getResult() {return product; } }
public class Diector { private Builder builder; public void setBuilder(Builder builder) { this.builder = builder; } public Diector(Builder builder){ this.builder=builder; } public Product construct(){ builder.buildPartA(); builder.buildPartB(); builder.buildPartC(); return builder.getResult(); } }
|
Anything can go right will go right