2.创建型 - Builder模式 (Builder)

1.Builder模式

  • 定义说明
    创建复杂对象,可以精细化的控制对象的构造流程;
    解耦,将构建过程与组件分离。

2.UML类图

在这里插入图片描述

  • 角色介绍
    AbstractProduct:抽象产品类,需要构建的目标
    AbstractBuilder:抽象Builder,规范产品的组件
    ConcreteBuilder:具体Builder
    Director:统一构建过程

  • 要点
    在具体的Builder中创建Product对象,并将其返回
    通常产品的构造方法私有,只开放Builder的方式来创建对象
    上述的UML类图是较为负责,实际工作中会用更便捷的方式,如下示例

3.简单版本

public class Orchestration {

    protected String name;
    protected long duration;
    protected String type;
    protected String author;

    private Orchestration() {

    }

    public static class Builder {
        Orchestration orch;

        public Builder() {
            orch = new Orchestration();
        }

        public Builder setName(String name) {
            orch.name = name;
            return this;
        }

        public Builder setDuration(long duration) {
            orch.duration = duration;
            return this;
        }

        public Builder setType(String type) {
            orch.type = type;
            return this;
        }

        public Builder setAuthor(String author) {
            orch.author = author;
            return this;
        }

        public Orchestration build() {
            return orch;
        }

    }
}

4.Android源码中应用

  • AlertDialog的创建是典型Builder模式

5.总结

  • 优缺点:
    优点:封装性良好,对用户屏蔽了内部实现细节、易于扩展
    缺点:会产生多余的Builder对象,这也是大部分设计模式的通病
发布了37 篇原创文章 · 获赞 0 · 访问量 587

猜你喜欢

转载自blog.csdn.net/qq_37514242/article/details/103207923