博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【设计模式】—— 创建者模式Builder
阅读量:6985 次
发布时间:2019-06-27

本文共 2278 字,大约阅读时间需要 7 分钟。

  模式意图

  一个对象的创建十分复杂,为了区分构建过程和使用过程,因此分开。使用一个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 }

  变身结果

变形出脑袋...变形出身体...啊!...变形金刚 变身....

 

  

本文转自博客园xingoo的博客,原文链接:,如需转载请自行联系原博主。
你可能感兴趣的文章
23种设计模式之解释器模式
查看>>
iptables命令结构之命令
查看>>
RabbitMQ之Exchange分类
查看>>
综合布线系统的构成
查看>>
计算机硬件 — 计算机简介
查看>>
关于重写session实现的时候可能会导至nginx 502的问题
查看>>
7z(p7zip)压缩软件在Linux下的安装和使用
查看>>
jetbrick-template 1.1.0 发布,支持 #tag, #macro, layout
查看>>
TCP的六个控制位
查看>>
numpy库中的extend()函数使用
查看>>
进制转换
查看>>
我的友情链接
查看>>
新书上市:《FLUENT 14.0超级学习手册》
查看>>
mysql数据库query cache
查看>>
使用docker commit 来扩展一个image
查看>>
jsp 防止sql注入 之 preparestatement篇(转载)
查看>>
Linux之Ansible入门用法(实验解析)
查看>>
Linux系统如何在开机时修改root密码
查看>>
共济失调对我们的危害你知道吗
查看>>
Anychat的绝对路径与相对路径
查看>>