美文网首页
设计模式之建造者模式

设计模式之建造者模式

作者: 成为一个无趣的人 | 来源:发表于2020-03-08 14:38 被阅读0次

设计模式之建造者模式

1. 模式定义

建造者模式又可以成为生成器模式,它属于对象创建型模式。建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。它一步一步创建一个复杂对象,而且允许用户只通过指定复杂对象的类型和内容就可以构建他们,而不需要知道内部构建细节[1]

​ - [1] 图说设计模式

2. UML类图

建造者模式

3. 代码描述

package com.lemon.builder;

import lombok.Data;

/**
 * @author Hello
 * @description 复杂产品,由组件ABC构成
 * @date 2020-03-08 09:23
 */
@Data
public class Product {
    private Object componentA;
    private Object componentB;
    private Object componentC;
}
package com.lemon.builder;

/**
 * @author Hello
 * @description
 * @date 2020-03-08 09:22
 */
public abstract class AbstractBuilder {
    public abstract Object buildA();
    public abstract Object buildB();
    public abstract Object buildC();
}
package com.lemon.builder;

/**
 * @author Hello
 * @description 具体建造者A
 * @date 2020-03-08 09:22
 */
public class BuilderA extends AbstractBuilder{
    @Override
    public Object buildA() {
        return "建造者A建造的组件A";
    }

    @Override
    public Object buildB() {
        return "建造者A建造的组件B";
    }

    @Override
    public Object buildC() {
        return "建造者A建造的组件C";
    }
}
package com.lemon.builder;

/**
 * @author Hello
 * @description 具体建造者B
 * @date 2020-03-08 09:22
 */
public class BuilderB extends AbstractBuilder{
    @Override
    public Object buildA() {
        return "建造者B建造的组件A";
    }

    @Override
    public Object buildB() {
        return "建造者B建造的组件B";
    }

    @Override
    public Object buildC() {
        return "建造者B建造的组件C";
    }
}
package com.lemon.builder;

/**
 * @author Hello
 * @description 指挥者,负责直接与客户端交互,建造产品
 * @date 2020-03-08 09:23
 */
public class Director {
    private AbstractBuilder builder;

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

    public Product build() {
        Product product = new Product();
        product.setComponentA(builder.buildA());
        product.setComponentB(builder.buildB());
        product.setComponentC(builder.buildC());
        return product;
    }
}

4. 举个栗子

直接看类图和代码可能还不够直观,理解起来有困难,那么我们还是举个栗子。假设你去奶茶店购买饮品,你对奶茶妹妹说,一杯珍珠奶茶,不加珍珠,七分糖。奶茶妹妹虽然一脸懵逼,但还是拿起了调制珍珠奶茶的杯子,加奶、加茶再加七分糖,至此,你的珍珠奶茶也就做好了。在这个过程中,你相当于客户类,奶茶妹妹相当于指挥者类,调制奶茶的杯子相当于具体建造者,假如该奶茶店还有牛奶、咖啡、水果茶等饮品,那么也应该有牛奶具体建造者、咖啡具体建造者、水果茶具体建造者。奶茶妹妹每次只需要更换代表具体建造者的杯子,就能按客户需求调制不同的饮品。

5.总结

  • 在建造者模式中,客户端不必知道产品内部的细节,将产品本身与产品的创建过程解耦,是的相同的创建过程可以创建不同的产品对象。
  • 每一个具体建造者都相对独立,因此可以很方便地替换具体建造者或新增具体建造者,用户使用不同的具体建造者即可得到不同的产品对象。
  • 可以更加精细地控制产品地创建过程。
  • 增加新的具体建造者无需修改原有类库地代码,指挥者针对抽象建造者编程,系统扩展方便,符合“开闭原则”。
  • 建造者模式所创建的产品一般具有较多相同的共同点,其组成部分相似,如果产品之间的差异性很大,则不适合使用建造者模式。
  • 如果产品地内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。

相关文章

  • Android中涉及的模式

    我的Java设计模式-建造者模式 我的Java设计模式-观察者模式 重学设计模式之单例模式

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 设计模式之建造者模式

    设计模式之建造者模式 1. 模式定义 建造者模式又可以成为生成器模式,它属于对象创建型模式。建造者模式将一个复杂对...

  • Javaの设计模式之建造者模式

    推荐阅读:《设计模式之禅》 今早早起,刚刚出炉,哈哈 BuilderPattern 设计模式之建造者模式 Demo...

  • 设计模式之建造者模式

    设计模式之建造者模式 建造者模式 属于 创建型模式,提供一种创建对象的最佳方式。 创建型模式 指不是直接使用ne...

  • Retrofit

    Retrofit设计模式 动态代理,装饰模式,建造者模式,抽象工厂模式,适配器模式 建造者模式创建Retrofit...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • java设计模式--建造者模式

    java设计模式--建造者模式 建造者模式定义 建造者模式:是将复杂对象的构建与表示进行分离,使同样的构建过程会有...

  • 【Java设计模式】--建造者模式

    建造者模式(Bulider模式) 一、什么是建造者模式 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示...

  • 建造者设计模式-Builder design pattern

    建造者设计模式是创建型设计模式的一种。创建型设计模式处理对象创建的问题。 建造者设计模式,用来构建需要经过若干个建...

网友评论

      本文标题:设计模式之建造者模式

      本文链接:https://www.haomeiwen.com/subject/wwbddhtx.html