美文网首页大话设计模式
第13章 建造者模式(Builder)生成器模式

第13章 建造者模式(Builder)生成器模式

作者: 小超_8b2f | 来源:发表于2020-03-23 11:59 被阅读0次

1. 什么是建造者模式?

将一个复杂的\color{red}{对象}\color{blue}{构建}与它的\color{blue}{表示}分离,使同样的构建过程可以创建不同的表示

如果我们用了建造者模式,那么用户只需指定需要建造类型就可以得到它们,而具体建造的过程和细节就不需要知道。

image.png

2. 什么时候用建造者模式?

它主要用于创建一些复杂的对象,这些对象的内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。

3. 建造者模式的好处

使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。

建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。

建造者模式结构图
/**
 * Product类:产品类,由多个部件组成
 */
class Product {
    List<String> parts = new ArrayList();

    public void add(String part) {
        parts.add(part);
    }

    public void show() {
        System.out.println("\n 产品 创建 -----");
        for (String part : parts) {
            System.out.println(part);
        }
    }
}

/**
 * 抽象建造者类:确定产品由2个部件partA 和 partB组成,并声明一个得到产品建造后结果的方法:getResult
 */
public abstract class Builder {
    public abstract void buildPartA();
    public abstract void buildPartB();
    public abstract Product getResult();
}

/**
 * 具体建造者类
 */
class Builder1 extends Builder {
    private Product product = new Product();
    @Override
    public void buildPartA() {
        product.add("部件A");
    }
    @Override
    public void buildPartB() {
        product.add("部件B");
    }
    @Override
    public Product getResult() {
        return product;
    }
}

/**
 * 具体建造者类
 */
class Builder2 extends Builder {
    private Product product = new Product();
    @Override
    public void buildPartA() {
        product.add("部件X");
    }
    @Override
    public void buildPartB() {
        product.add("部件Y");
    }
    @Override
    public Product getResult() {
        return product;
    }
}

/**
 * 指挥者类
 */
class Director {
    /**
     * 用来指挥建造过程
     */
    public void construct(Builder builder) {
        builder.buildPartA();
        builder.buildPartB();
    }
}

class Client {
    public static void main(String[] args) {
        //指挥者,指挥构建过程
        Director director = new Director();
        //1. 建造者只关心建造的细节和实现
        Builder builder1 = new Builder1();
        //2. 将建造过程的统筹 抽离 给指挥者来干
        director.construct(builder1);
        //3. 建造者本身返回一个建造结果
        Product p1 = builder1.getResult();
        //4. 建造结果的展示
        p1.show();

        //更换新的建造者
        Builder builder2 = new Builder2();
        director.construct(builder2);
        Product p2 = builder1.getResult();
        p2.show();
    }
}

相关文章

  • 设计模式之建造者模式

    建造者模式的定义   建造者模式(Builder Pattern)也叫做生成器模式,其定义如下:  Separat...

  • 建造者模式

    建造者模式的定义 建造者模式(Builder Pattern)也叫做生成器模式,其定义如下:Separate th...

  • Android 中的建造者模式

    Android 中的建造者模式 概述 建造者模式(Builder Pattern)也叫生成器模式,其定义如下:se...

  • 设计模式-构建者模式

    概念 建造者模式(英:Builder Pattern)是一种创建型设计模式,又名:生成器模式。GOF 给建造者模式...

  • 《设计模式之禅》读书笔记-2.5-建造者模式

    2.5 建造者模式 定义: Builder Pattern,也叫生成器模式Separate the constru...

  • 建造者模式——不止提高代码逼格

    简介 Builder Pattern,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式。 建造者模式是一种...

  • 建造者模式(2)-原理类图

    建造者模式介绍 建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的...

  • 创建型-Builder

    Builder 模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式。实际上,建造者模式的原理和代码实现...

  • 建造者模式

    建造者模式的定义 建造者模式(Builder Pattern)也叫做生成器模式,其定义如下 (将一个复杂对象的构建...

  • 设计模式之建造者模式

    建造者模式(Builder Pattern)也叫做生成器模式,今天让我们一起学习一下建造者模式。 一、基本介绍 建...

网友评论

    本文标题:第13章 建造者模式(Builder)生成器模式

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