首页 > 代码库 > 【设计模式】—— 创建者模式Builder
【设计模式】—— 创建者模式Builder
前言:【模式总览】——————————by xingoo
模式意图
一个对象的创建十分复杂,为了区分构建过程和使用过程,因此分开。使用一个Director类进行对象的创建,Builder规定了这个创建过程。
模式结构
Builder 抽象建造者接口,规范各个组成部分的构建。
ConcreteBuilder 具体建造者角色,实现组成部分的构建,并提供示例。
Product 产品角色,创建返回的对象。
Director 导演者角色,负责创建以及使用。
使用场景
1 当创建对象复杂并且与其使用过程独立。
2 构造过程允许构造的对象有不同的表示。
代码结构
Builder接口
1 abstract class Builder{2 public abstract void buildPart1();3 public abstract void buildPart2();4 public abstract Product retrieveResult();5 }
ConcreteBuilder 具体产品
1 class ConcreteBuilder extends Builder{ 2 public void buildPart1() { 3 4 } 5 public void buildPart2() { 6 7 } 8 public Product retrieveResult() { 9 return null;10 }11 }
Product 产品
1 class Product{2 //Anything3 }
Director 导演者角色
1 class Director{2 private Builder builder;3 public void Constructor(){4 builder = new ConcreteBuilder();5 builder.buildPart1();6 builder.buildPart2();7 builder.retrieveResult();8 }9 }
生活中的设计模式
‘ 近年来,变形金刚4出了也快半年了,但是还是喜欢第一部的女主角。
而擎天柱队长,经典的台词,“汽车人变身”也是伴随着复杂的变化过程。而汽车人的转变只在一瞬之间,看起来行云流水,这就有点创建者的味道。擎天柱的各个身体部分经过复杂的变化,最后变身成为汽车人。
1 /** 2 * Builder 3 */ 4 interface Transformer{ 5 public void Create_Head(); 6 public void Create_Body(); 7 8 public Autobots transforming(); 9 }10 /**11 * ConcreteBuilder12 */13 class Transformer_Captain implements Transformer{14 public void Create_Head() {15 System.out.println("变形出脑袋...");16 }17 public void Create_Body() {18 System.out.println("变形出身体...");19 }20 public Autobots transforming() {21 return new Autobots();22 }23 }24 /**25 * Product26 */27 class Autobots{28 Autobots(){29 System.out.println("啊!...变形金刚 变身....");30 }31 }32 /**33 * 这个类当做Director34 */35 public class TransformerBuilder {36 37 public static Autobots Transforming(Transformer optimusPrime){38 optimusPrime.Create_Head();39 optimusPrime.Create_Body();40 return optimusPrime.transforming();41 }42 43 public static void main(String[] args){44 Transformer optimusPrime = new Transformer_Captain();45 Transforming(optimusPrime);46 }47 48 }
变身结果
变形出脑袋...变形出身体...啊!...变形金刚 变身....
【设计模式】—— 创建者模式Builder
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。