设计模式-建造者模式

建造者模式是一种将复杂对象构建与表示分离的设计模式,通过分解构建步骤并使用指挥者类协调,实现灵活的复杂对象创建。此模式适用于创建具有多种表示和复杂内部结构的对象。文中给出了一个Java实现的例子,包括Product、Builder接口、ConcreteBuilder和Director类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建造者模式是一种创建型设计模式,它允许你创建复杂对象的不同表示,而无需直接与其构造函数参数进行交互。建造者模式将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。

建造者模式的核心思想是将一个复杂对象的构建过程分解为多个简单的步骤,然后按照特定的顺序进行组装,最终构建出一个完整的对象。这种方式可以使得构建过程更加灵活,同时也可以避免在构建过程中出现错误。

建造者模式通常包含以下几个角色:

1. 产品类:表示被构建的复杂对象,包含多个组成部分。

2. 抽象建造者类:定义了创建产品各个部分的抽象接口,以及组装产品的抽象方法。

3. 具体建造者类:实现了抽象建造者接口,完成了产品各个部分的具体创建和组装方法。

4. 指挥者类:负责调用具体建造者类中的方法,按照特定的顺序组装产品。

建造者模式适用于以下场景:

1. 需要创建复杂对象的场景,其中复杂对象由多个部分组成,且各个部分之间的创建顺序和组装方式不同。

2. 需要创建的对象具有复杂的内部结构,且需要隐藏其创建细节。

3. 需要创建的对象的属性相互依赖,需要按照特定的顺序进行创建和组装。

4. 需要创建的对象的表示形式有多种,需要根据不同的场景进行创建。

总之,建造者模式可以帮助我们更加灵活地创建复杂对象,同时也可以避免在创建过程中出现错误。

用java来实现以下建造者模式:

public class Product {
    private String partA;
    private String partB;
    private String partC;

    public void setPartA(String partA) {
        this.partA = partA;
    }

    public void setPartB(String partB) {
        this.partB = partB;
    }

    public void setPartC(String partC) {
        this.partC = partC;
    }

    public String getPartA() {
        return partA;
    }

    public String getPartB() {
        return partB;
    }

    public String getPartC() {
        return partC;
    }
}

public interface Builder {
    void buildPartA();

    void buildPartB();

    void buildPartC();

    Product getResult();
}

public class ConcreteBuilder implements Builder {
    private Product product = new Product();

    @Override
    public void buildPartA() {
        product.setPartA("PartA");
    }

    @Override
    public void buildPartB() {
        product.setPartB("PartB");
    }

    @Override
    public void buildPartC() {
        product.setPartC("PartC");
    }

    @Override
    public Product getResult() {
        return product;
    }
}

public class Director {
    public void construct(Builder builder) {
        builder.buildPartA();
        builder.buildPartB();
        builder.buildPartC();
    }
}

public class Client {
    public static void main(String[] args) {
        Director director = new Director();
        Builder builder = new ConcreteBuilder();
        director.construct(builder);
        Product product = builder.getResult();
        System.out.println(product.getPartA());
        System.out.println(product.getPartB());
        System.out.println(product.getPartC());
    }
}

在上面的示例代码中,Product类是要被构建的复杂对象,Builder接口定义了构建过程中需要实现的方法,ConcreteBuilder类实现了Builder接口,负责具体的构建过程,Director类负责调用Builder的方法来构建Product对象,Client类则是使用建造者模式的客户端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值