10.10

构建者模式

下面是一个简单的Java代码展示示例,展示了构建者模型的现实:

// 产品类
class Product {
    private String part1;
    private String part2;
    private String part3;

    public void setPart1(String part1) {
        this.part1 = part1;
    }

    public void setPart2(String part2) {
        this.part2 = part2;
    }

    public void setPart3(String part3) {
        this.part3 = part3;
    }

    public void show() {
        System.out.println("Product Parts:");
        System.out.println("Part 1: " + part1);
        System.out.println("Part 2: " + part2);
        System.out.println("Part 3: " + part3);
    }
}

// 抽象建造者类
abstract class Builder {
    protected Product product;

    public Builder() {
        product = new Product();
    }

    public abstract void buildPart1();

    public abstract void buildPart2();

    public abstract void buildPart3();

    public Product getProduct() {
        return product;
    }
}

// 具体建造者类
class ConcreteBuilder extends Builder {
    @Override
    public void buildPart1() {
        product.setPart1("Part 1");
    }

    @Override
    public void buildPart2() {
        product.setPart2("Part 2");
    }

    @Override
    public void buildPart3() {
        product.setPart3("Part 3");
    }
}

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

    public void setBuilder(Builder builder) {
        this.builder = builder;
    }

    public Product construct() {
        builder.buildPart1();
        builder.buildPart2();
        builder.buildPart3();
        return builder.getProduct();
    }
}

// 客户端代码
public class BuilderPatternExample {
    public static void main(String[] args) {
        Director director = new Director();
        Builder builder = new ConcreteBuilder();
        director.setBuilder(builder);

        Product product = director.construct();
        product.show();
    }
}

在上面的例子中,我们首先确定了产品类Product,它具有三个部分。然后,我们确定了抽像创建者类Builder,其中包含了创新产品的抽象方法。

接下来,我们发现了实体创建者类ConcreteBuilder,它继承自抽像创建者类。在实体构建者类中,我们发现了抽像方法,路径构造产品的各个部分。

然后,我们确定了指南者类Director,它负责组织构建者的工作流程。通过调用构建者的方法,按照特定的顺序结构产品,并返回最终的产品实例。

最后,在客户端代码中,我们创建了指南者对象和实体建造者对象,并将工具实体建造者对象传递给指南者。然后来,通过调用指南者的方法,我们开始构建产品。最后,我们通过construct()调用产品的show()方法,展示最终构造的产品。

构建者模型的关键点是将产品的构建过程与其表示分离开来,使相同的构建过程可以创建

不同的表现。通过建造者模式,我们可以以更灵动的地方建造复杂的对比,同时将建造过程序封装起来,使客户终端代号与实体结构过程序解劳。

posted @   liuxuechao  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示