建造者模式详解-CSDN博客

设计模式-建造者模式

定义

官方定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,通俗的说就是:建造者模式就是如何一步步构建一个包含多个组成部件的对象,相同的构建过程可以创建不同的产品

特点

建造者模式是一种创建型模式,适用于那些流程固定,建造的目标对象会有所改变这种场景,还有一种场景是代替多参数构造器

作用

1、用户不知道对象的建造过程和细节就可以创建出复杂的对象「屏蔽了建造的具体细节」
2、用户只需给出复杂对象的内容和类型可以创建出对象

结构

Builder 接口或抽象类 抽象的建造者, 不是必须的
ConcreateBuilder 具体的构建者 可以有多个
Product 普通的类 被构建的对象
Director 指挥者 统一指挥构造者去建造目标

这里写图片描述

组装Android 手机为例

1、要建造的对象 AndroidPhone

public class AndroidPhone {

private int emmcSize;
private String cup;

public void setCup(String cup) {
    this.cup = cup;
}

public void setEmmcSize(int emmcSize) {
    this.emmcSize = emmcSize;
}

}

2、抽象的建造者 Builder

public interface Builder {
void setCup(String cup);
void setEmmcSize(int size);
AndroidPhone createPhone() ;
}

3、具体建造者 AssemblerBuilder

public class AssembleBuilder implements Builder{

private AndroidPhone androidPhone = new AndroidPhone();

@Override
public void setCup(String cup) {
    androidPhone.setCup(cup);
}

@Override
public void setEmmcSize(int size) {
    androidPhone.setEmmcSize(size);
}

@Override
public AndroidPhone createPhone() {
    return androidPhone;
}

}

4、指挥者 Director

public class Director {

private Builder mBuilder;

public Director(Builder builder) {
    mBuilder = builder;
}

public AndroidPhone createPhone(String cup, int size) {
    mBuilder.setCup(cup);
    mBuilder.setEmmcSize(size);
    return mBuilder.createPhone();
}

}

5、测试类

public static void main(String[] args) {
Builder builder = new AssembleBuilder();

AndroidPhone androidPhone = new Director(builder).createPhone("mst618", 2048);

}

使用场景

1、如果一个对象有非常复杂的内部结构「这些产品通常有很多属性」,那么使用建造者模式
2、如果想把复杂对象的创建和使用分离开来,那么使用建造者模式「使用相同的创建步骤可以创建不同的产品」

建造者模式与简单工厂模式的差异

1、创建对象的粒度不同

工厂模式创建的是对象,而建造者模式创建的是一个复合产品,由各个复杂的部件组成。
2、关注点不同:
工厂模式注重只要把这个对象创建出来,而建造者模式不似要创造出这个产品,还有知道这个产品的组成部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值