BUILDER(生成器) -- 对象创建型模式

本文介绍了Builder模式,如何通过分离构建过程和对象表示,使同一构建算法能创建不同表示的复杂对象。主要涉及Builder接口、ConcreteBuilder实现、Director和Product的角色及其协作,强调了模式的优势和与AbstractFactory的区别。
摘要由CSDN通过智能技术生成
  1. 意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
  2. 动机:
  3. 适用性:
    a. 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式
    b. 当构造过程必须允许被构造的对象有不同的表示时。
  4. 结构:

生成器模式结构图
5. 参与者:
a. Builder: 为创建一个Product对象的各个部件指定抽象接口。
b. ConcreteBuilder:
实现Builder的接口以构建和装配该产品的各个部件。
定义并明确它所创建的表示。
提供一个检索产品的接口
c. Director: 构造一个使用Builder接口的对象
d. Product:
表示被构造的复杂对象。
包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
6. 协作:
a. 客户端创建Director对象,并用它所想要的Builder对象进行配置。
b. 一旦产品部件被生成,导向器(Director)就会通知生成器(ConcreteBuilder)。
c. 生成器处理导线器的请求,并将部件添加到该产品中。
d. 客户从生成器中检索产品。

协作时序图

  1. 效果:
    a. 它是你可以改变一个产品的内部表示
    b. 它将构造代码和表示代码分开
    c. 它使你可对构造过程进行更精细的控制
  2. 实现:
    a. 装配和结构接口
    b. 为什么产品没有抽象类
    c. 在Builder中缺省的方法为空
  3. 代码示例:
    //创建者
    public interface Builder {
        public void buildPart();
    }
    
    //具体创建者
    public class ConcreteBuilder implements Builder{
        private Product product;
        @Override
        public void buildPart() {
            this.product = product;
        }
    
        public Product getResult() {
            return product;
        }
    }
    
    
    //指示器
    public class Director {
        private Builder builder;
    
        public Director(Builder builder) {
            this.builder = builder;
        }
    
        public void construct() {
            builder.buildPart();
        }
    }
    
    //产品
    public class Product {
    
        public void describe() {
            System.out.println("This is product");
        }
    
    }
    
  4. 已知应用
  5. 相关模式:
    Abstract Factory与Builder相似,因为它也可以创建复杂对象。
    主要的区别是Builder模式着重一步步构造复杂对象。而Abstract Factory着重于多个系列产品对象(简单的或是复杂的)。
    Builder在最后的一步返回产品,而对于Abstract Factory
    Composite通常是用Builder生成的。
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值