通俗易懂的java设计模式之 --建造者模式

建造者模式是一种创建型设计模式,它提供一种分步骤创建复杂对象的方式,使得同样的构建过程可以创建不同的表示。

在 Java 中,建造者模式通常包括一个抽象建造者(Builder)类、一个具体建造者(ConcreteBuilder)类和一个产品(Product)类。抽象建造者类定义了一个创建产品所需的所有方法,而具体建造者类实现这些方法,并提供创建一个具体产品的方法。产品类包含要创建的对象的属性。

下面是一个简单的 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;
    }

    @Override
    public String toString() {
        return "Product [partA=" + partA + ", partB=" + partB + ", partC=" + partC + "]";
    }
}

//抽象建造者
public abstract class Builder {
    public abstract void buildPartA();
    public abstract void buildPartB();
    public abstract void buildPartC();
    public abstract Product getResult();
}

//具体建造者
public class ConcreteBuilder extends Builder {
    private Product product = new Product();

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

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

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

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

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

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

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

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

在上面的例子中,Product 类定义了要创建的产品的属性。Builder 是抽象建造者类,定义了一个创建产品所需的所有方法。ConcreteBuilder 是具体建造者类,实现了这些方法,并提供了创建一个具体产品的方法。Director 是指导者类,它负责指导具体建造者类按照正确的顺序构建产品。Client 是客户端类,它实例化一个具体建造者对象并将其传递给 Director,Director 使用具体建造者对象创建产品,并返回一个产品实例。

建造者模式的优点是可以让你分步骤创建复杂对象,并且可以在不同的步骤中使用不同的创建方法。这种模式还可以隐藏产品的内部结构,从而使代码更加灵活。但是,缺点是需要创建多个类,从而增加了代码

的复杂度。同时,建造者模式还可能导致性能问题,因为它涉及创建多个对象,而这些对象可能包含大量的数据。

在上面的例子中,我们定义了一个产品类,该类包含要创建的对象的属性。我们还定义了一个抽象建造者类,其中包含创建产品所需的所有方法,具体建造者类实现了这些方法,并提供了创建一个具体产品的方法。Director 类则负责指导具体建造者类按照正确的顺序构建产品,客户端类则实例化一个具体建造者对象并将其传递给 Director。

在具体实现中,我们可以根据需要扩展 Product 和 Builder 类,以适应更复杂的对象的创建需求。例如,我们可以将 Product 类扩展为一个包含更多属性的类,或者将 Builder 类扩展为一个包含更多创建方法的类。

总之,建造者模式是一种创建型设计模式,它提供了一种分步骤创建复杂对象的方式,使得同样的构建过程可以创建不同的表示。建造者模式的优点是可以让你分步骤创建复杂对象,并且可以在不同的步骤中使用不同的创建方法。但是,缺点是需要创建多个类,从而增加了代码的复杂度。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值