构建者模式-Builder

构建者模式-Builder

Builder模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来

Builder接口

定义了构建者的方法.

public interface Builder {
    void makeTitle(String title);

    void makeString(String str);

    void makeItems(String[] items);

    void close();
}

TextBuilder类

这是Builder接口的一个具体实现, 用于根据输入构建出类似Markdown风格的内容

public class TextBuilder implements Builder {
    private StringBuffer out = new StringBuffer();

    @Override
    public void makeTitle(String title) {
        out.append("==============================\n");
        out.append("『 " + title + " 』\n");
        out.append("\n");
    }

    @Override
    public void makeString(String str) {
        out.append("■ " + str + "\n");
        out.append("\n");
    }

    @Override
    public void makeItems(String[] items) {
        for (int i = 0; i < items.length; i++) {
            out.append(" ?" + items[i] + "\n");
        }
        out.append("\n");
    }

    @Override
    public void close() {
        out.append("==============================\n");
    }

    public String getResult() {
        return out.toString();
    }
}

  

Director类

这是一个指挥官, 利用Builder来进行组装内容

public class Director {
    private Builder builder;

    public Director(Builder builder) {              // 因为接收的参数是Builder类的子类
        this.builder = builder;                     // 所以可以将其保存在builder字段中
    }

    public void construct() {                       // 编写文档
        builder.makeTitle("Greeting");              // 标题
        builder.makeString("从早上至下午");         // 字符串
        builder.makeItems(new String[]{             // 条目
                "早上好。",
                "下午好。",
        });
        builder.makeString("晚上");                 // 其他字符串
        builder.makeItems(new String[]{             // 其他条目
                "晚上好。",
                "晚安。",
                "再见。",
        });
        builder.close();                            // 完成文档
    }
}

Main

本类用于运行测试

public class Main {
    public static void main(String[] args) {
        // 构建者
        TextBuilder textbuilder = new TextBuilder();

        // 指挥者
        Director director = new Director(textbuilder);

        // 构建
        director.construct();

        // 构建好的内容
        System.out.println(textbuilder.getResult());
    }
}

  

原文地址:https://www.cnblogs.com/noKing/p/9009827.html

时间: 2024-08-03 03:31:47

构建者模式-Builder的相关文章

构建者模式(Builder)

1.定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 2.结构 Builder:构建者接口,定义创建一个Product对象所需的各个部件的操作 ConcreteBuilder:具体的生成器表现,实现各个部件的创建,并负责组装Product对象的各个部件,同时还提供一个让用户获取组装完成后的产品对象的方法 Director:指导者,主要用来调用Builder接口,以一个统一的过程来创建所需要的Product对象 Product:产品,表示被生成器构建的复杂对象,包含多

设计模式:构建器模式(Builder)

构建器模式有点类似于之前的抽象工厂模式,但比抽象工厂模式更强大,构建器模式可以看做由两部分组成,一是builder,二是director,builder的基本思想就是抽象工厂,而director的存在是为了使得对builder的使用更加灵活,下面是builder的代码示例: class A { public: int i; A() : i(1) {}; }; class B { public: char c; B() : c('a') {}; }; class AB { public: A a;

构建器模式

*构建器模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.类图如下: *product产品类:表示被构建器构建的复杂对象,包含多个部件. 1 //产品接口 示意性产品,所以没有任何方法 2 public interface Product{ 3 } *builder构建器接口:定义创建一个product对象所需要的各个部件的操作. 1 //生成器接口 2 public interface Builder{ 3 public void builderPart1();

Java构建器模式

当创建对象需要传入多个参数的时候我们通常会根据参数的数量写不同的构造器,具体如下 public A(int a){} public A(int a, int b){} public A(int a, int b, int c){} 根据不同的参数调用不同的构造器,但是当参数多了的时候,这种方式不够灵活,所以会实现动态传参的方法 public A(){} public void seta(int a){} public void setb(int b){} public void setc(int

建造者模式&lt;Builder&gt;

概述 将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式 角色 建造者(Builder):为创建一个产品对象的各个部件指定抽象接口. 具体建造者(ConcreteBuilder):实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口 产品(Product):表示被构造的复杂对象.ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最

建造者模式(Builder Pattern)

模式定义 造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. UML类图 Builder:抽象建造者 ConcreteBuilder:具体建造者 Director:指挥者 Product:产品角色 代码结构 public static class BuilderApp { public static void Run() { Director director = new Director(); Builder b1 = new

设计模式之建造者模式——Builder

一.概述 Builder模式,中文名为建造者模式,又名生成器模式.构建者模式等,是创建型设计模式之一.用于将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 1.适用性: 对象的创建比较复杂.有多种创建形式时 创建复杂对象的算法与对象内部组成和装配是相对独立的 2.UML类图 Builder:定义创建Product各个部件的抽象接口 ConcreteBuilder:继承自Builder,实现创建具体类型的Product所有部件的接口,并提供一个获取最终产品的接口. Dir

建造者模式(Builder)——从组装电脑开始

建造者模式(Builder)--从组装电脑开始 建造者模式概括起来就是将不同独立的组件按照一定的条件组合起来构成一个相对业务完整的对象.调用者无需知道构造的过程. 我们从组装电脑开始 让我们从买组装电脑开始吧. 首先要买一个电脑,一般都有两个选择 -- 品牌电脑和组装电脑,一般人为了省事和放心都会选择买品牌电脑(也就是整机).在这里,为了更好的分析问题,假定我们为了性价比决定要买组装电脑.那么我们该怎么做呢. 首先我们得学习一个完整的电脑的组成部分有哪些? 经过翻查一部分资料发现,主要部件分为主

设计模式—建造者模式(Builder)

title: 设计模式-建造者模式 建造者模式(Builder)是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节.建造者模式属于对象创建型模式.我们获得一个对象的时候不是直接new这个对象出来,而是对其建造者进行属性设置,然后建造者在根据设置建造出各个对象出来.建造者模式又可以称为生成器模式. 模式结构 一个标准的建造者模式包含如下角色: Builder:抽象建造者 ConcreteBuilder:具体建造者 Director