设计模式学习笔记(五)建造者模式和其他对象创建方式的区别

一、建造者模式介绍

1.1 建造者模式的定义

建造者(Builder)模式指将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。它是把对象的构建和表述分离。

也就是通过多个简单对象组装出一个复杂对象的过程,比如机器人需要多步简单的组装、装修需要各个子步骤的合并完成:

更多资料获取:评论区留言或是私信获取到哦,资料都是免费分享给大家

1.2 建造者模式的特点

  1. 优点

    • 建造者模式将零件细节进行了封装,实现了构建和表示分离

    • 建造者可以对创建过程逐步细化,而不对其它模块产生影响,能方便控制细节风险

  2. 缺点

    • 如果产品内部变化,建造者也有整体进行修改,后期维护成本较大

二、建造者模式结构与实现

2.1 建造者模式的结构

建造者模式主要由产品(Product)、抽象建造者(Builder)、具体建造者(Concrete Builder)和指挥者(Director)四个角色构成,如下面的类图所示:

  1. Product:包含多个组件的产品,需要由具体建造者进行创建
  2. AbstractBuilder:创建具体建造者的接口,通常还包括一个返回产品的接口
  3. Concrete Builder:继承/实现抽象建造者,完成产品的各个部分的具体创建方法
  4. Director:负责调用建造者以及内部具体产品对象的构建,在这之中不涉及具体的产品信息

2.2 建造者模式的实现

根据上面的类图我们可以写出如下代码:

//产品角色
public class Product {

    public void setPartA(){}

    public void setPartB(){}

    public void setPartC(){}

    public void show(){
        System.out.println("完成产品构建一次");
    }
}

//抽象建造者
public abstract class AbstractBuilder {

    protected Product product = new Product();

    public abstract void buildPartA();

    public abstract void buildPartB();

    public abstract void buildPartC();

    public Product getResult() {
        return product;
    }
}

//具体建造者
public class Builder1 extends AbstractBuilder{

    @Override
    public void buildPartA() {
        product.setPartA();
    }

    @Override
    public void buildPartB() {
        product.setPartB();
    }

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值