【设计模式】—— 创建者模式Builder

 模式意图

一个对象的创建十分复杂,为了区分构建过程和使用过程,因此分开。使用一个Director类进行对象的创建,Builder规定了这个创建过程。

模式结构


       Builder 抽象建造者接口,规范各个组成部分的构建。

  ConcreteBuilder 具体建造者角色,实现组成部分的构建,并提供示例。

  Product 产品角色,创建返回的对象。

  Director 导演者角色,负责创建以及使用。

使用场景

       1 当创建对象复杂并且与其使用过程独立。

  2 构造过程允许构造的对象有不同的表示。

代码结构

Builder接口

abstract class Builder{
     public abstract void buildPart1();
     public abstract void buildPart2();
     public abstract Product retrieveResult();
}

ConcreteBuilder 具体产品

class ConcreteBuilder extends Builder{
     public void buildPart1() {
          
     }
    public void buildPart2() {
         
     }
     public Product retrieveResult() {
          return null;
     }
}

Product 产品

class Product{
     //Anything
}

Director 导演者角色

class Director{
     private Builder builder;
     public void Constructor(){
         builder = new ConcreteBuilder();
         builder.buildPart1();
         builder.buildPart2();
         builder.retrieveResult();
     }
 }

 生活中的设计模式


变形金刚喜欢第一部的女主角。

而擎天柱队长,经典的台词,“汽车人变身”也是伴随着复杂的变化过程。而汽车人的转变只在一瞬之间,看起来行云流水,这就有点创建者的味道。擎天柱的各个身体部分经过复杂的变化,最后变身成为汽车人。

 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  * ConcreteBuilder
12  */
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  * Product
26  */
27 class Autobots{
28      Autobots(){
29         System.out.println("啊!...变形金刚 变身....");
30     }
31 }
32 /**
33  * 这个类当做Director
34  */
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 }

变身结果

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值