设计模式之建造者模式

建造者模式也是创建型模式中的一种,所谓的创建型模式,指的是如何创建对象,关注的是对象的创建过程。

建造者模式是将一个复杂对象分解成多个相对简单的子模块进行创建,比如游戏中常见的人物模型,在大多数游戏中,都有游戏角色的创建,把头部中的脸型、发行、穿着等当作人物创建的局部对象处理。

创建者模式的UML图如下:
在这里插入图片描述
示例代码:

// 建造者模式由产品、抽象建造者、具体建造者和指挥者四个部分组成

// 产品
class Product {
    private String partA;
    private String partB;
    private String partC;

    public void setPartA(String partA) {
        this.partA = partA;
    }

    public void setPartB(String partB) {
        this.partB = partB;
    }

    public void setPartC(String partC) {
        this.partC = partC;
    }

    public void show() {
        System.out.println("产品展示....")
    }
}

// 抽象建造者
abstract class Builder {
    protected Product product = new Product();

    public abstract void buildPartA();

    public abstract void buildPartB();

    public abstract void buildPartC();

    public Product getResult() {
        return product;
    }
}

// 具体建造者
public class ConcreteBuilder extend Builder {
    public void buildPartA() {
        product.setPartA("建造 PartA");
    }

    public void buildPartB() {
        product.setPartB("建造 PartB");
    }

    public void buildPartC() {
        product.setPartC("建造 PartC");
    }
}

// 指挥者
class Director {
    private Builder builder;

    public Director(Builder builder) {
        this.builder = builder;
    }

    // 产品构建与组装方法
    public Product construct() {
        builder.buildPartA();
        builder.buildPartB();
        builder.buildPartC();

        return builder.getResult();
    }
}

// 客户类
class Client {
    public static void main(String[] args) {
        Builder builder = new Builder();    // 建造者
        Director director = new Director(builder);  // 指挥者
        Product product = director.getResult(); // 产品
        product.show();
    }
}

建造者模式由四个部分组成:产品对象、抽象建造者、具体建造者和指挥者。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值