设计模式读书笔记之建造者模式(Builder)

建造者模式: 将复杂对象的建造和表示分离, 使同样的建造过程可以创造出不同细节的产品.

建造者模式,听名字就应该知道和工厂模式一样,是用来创造对象的。但是建造者和工厂模式的区别就是工厂模式只关注最终的产品,它往往是简单的调用被创建者的构造函数;而建造者更关心细节, 它定义了创建一个复杂对象所需的步骤, 而创建者具体的实现类可根据具体的需求,调整创建细节。

示例:

[java]  view plain  copy
  1. //产品  
  2. package designpattern.builder;  
  3. public class Product {  
  4.     private String part1;  
  5.     private String part2;  
  6.     private String part3;  
  7.     public String getPart1() {  
  8.         return part1;  
  9.     }  
  10.     public void setPart1(String part1) {  
  11.         this.part1 = part1;  
  12.     }  
  13.     public String getPart2() {  
  14.         return part2;  
  15.     }  
  16.     public void setPart2(String part2) {  
  17.         this.part2 = part2;  
  18.     }  
  19.     public String getPart3() {  
  20.         return part3;  
  21.     }  
  22.     public void setPart3(String part3) {  
  23.         this.part3 = part3;  
  24.     }  
  25.       
  26. }  
  27. //抽象建造者  
  28. package designpattern.builder;  
  29. public abstract class Builder {  
  30.     public abstract void buildPart1();  
  31.     public abstract void buildPart2();  
  32.     public abstract void buildPart3();  
  33.     public abstract Product getResult();  
  34. }  
  35. //具体建造者  
  36. package designpattern.builder;  
  37.   
  38. public class ConcreteBuilder extends Builder{  
  39.     Product product = new Product();  
  40.     public void buildPart1() {  
  41.         System.out.println("build part 1 for product");  
  42.         product.setPart1("part1");  
  43.     }  
  44.     public void buildPart2() {  
  45.         System.out.println("build part 2 for product");  
  46.         product.setPart2("part2");  
  47.     }  
  48.     public void buildPart3() {  
  49.         System.out.println("build part 3 for product");  
  50.         product.setPart3("part3");  
  51.     }  
  52.     public Product getResult() {  
  53.         return product;  
  54.     }  
  55.   
  56. }  
  57. //指挥者  
  58. package designpattern.builder;  
  59.   
  60. public class Director {  
  61.     public void construct(Builder b){  
  62.         b.buildPart1();  
  63.         b.buildPart2();  
  64.         b.buildPart3();  
  65.         //return b.getResult();  
  66.     }  
  67. }  

特点:

1 建造者定义了建造产品所需的各个步骤;

2 指挥者通过调用建造者, 按既定的步骤建造对象.

 

抽象建造者通过把产品的生产过程分解为不同的步骤,  从而使具体建造者在具体的建造步骤上具有更对弹性. 从而创造出不同表示的产品。

举一例:

比如建造一个人: 抽象建造者把造人的过程分解为: 建造头部,驱赶, 四肢, 血液系统, 呼吸系统..... 那么不同的具体建造者可以根据客户需要, 建造出不同的人来: 有的人躯体胖, 有的人手臂长, 有的人A型血, 有的人B型血......  这是构造函数无法提供的弹性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值