@BertLee
2017-08-08T15:04:09.000000Z
字数 1503
阅读 1248
建造者模式可以使客户端不需要知道产品有哪些组件,各组件是怎么生产的,最后是怎么装配组合的,只可以使程序更简洁,灵活。
- 抽象建造者:包括组件构造方法和产品返回方法;产品有多少零件,就有多少build方法。
- 具体建造者:实现产品组件的build方法
- 导演者:提供产品的组合方法
- 产品:具体类,包含组件及其getter,setter方法
建造者模式的结构如下图:
/*** 具体产品*/public class Computer {private String cpu;private String keybord;private String mouse;public String getCpu() {return cpu;}public void setCpu(String cpu) {this.cpu = cpu;}public String getKeybord() {return keybord;}public void setKeybord(String keybord) {this.keybord = keybord;}public String getMouse() {return mouse;}public void setMouse(String mouse) {this.mouse = mouse;}@Overridepublic String toString() {return "Computer{" +"cpu='" + cpu + '\'' +", keybord='" + keybord + '\'' +", mouse='" + mouse + '\'' +'}';}}
/*** builder接口* 1.提供build组件的方法,类似set方法* 2.提供返回产品的build方法,类似get方法*/public interface Builder {public Builder buildMouse(String mouseType);public Builder buildKeybord(String keybordType);public Computer build();}
/*** 实现builer接口* 1.提供想要产品的成员变量* 2.在构造方法中,初始化必需参数* 3.build组件的方法中,初始化不必须参数*/public class ComputerBuilder implements Builder{private Computer computer;public ComputerBuilder(String cpuType){computer = new Computer();computer.setCpu(cpuType);}public Builder buildKeybord(String keybordType) {computer.setKeybord(keybordType);return this;}public Builder buildMouse(String mouseType) {computer.setMouse(mouseType);return this;}public Computer build() {return computer;}}
吹牛:建造者模式将产品的构建和组合的职责分割开来,适合创建具有多种约束条件的复杂对象,最简洁的用法是将Director角色去掉,在cient采用链式编程的方法,将其初始化。
转载时,注明出处是人格的一种体现。
https://www.zybuluo.com/BertLee/note/843667
能力有限,如有纰漏,请在评论区指出,老朽虽一把年纪,必当感激涕零,泪如雨下。若有满嘴喷粪撕逼者,一律拉黑、举报,并移交阎王爷处理。