建造者模式是一种创建型设计模式,旨在将复杂的对象构建过程与其表示分离,从而使构建过程更加灵活和可扩展。建造者模式可以将复杂对象的构建与它的表示分离,使得相同的构建过程可以得到不同的表示。 ,,抽象工厂模式是一种创建型设计模式,它提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。
在计算机科学中,设计模式是一种被广泛使用的解决方案,用于解决特定类型的问题,这些模式提供了一种可重用的代码结构,可以帮助开发人员更有效地编写代码,我们将重点讨论一种设计模式——建造者模式。
建造者模式(Builder Pattern)是一种创建型设计模式,它可以将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示,这种模式的主要优点是可以将复杂的构建过程与表示逻辑分离,使得代码更加清晰、易于维护。
建造者模式的核心概念包括四个部分:
1、产品(Product):需要构建的对象,通常是一个抽象类或接口。
2、抽象建造者(AbstractBuilder):定义了创建产品的接口,但不包含具体的实现。
3、具体建造者(ConcreteBuilder):实现了抽象建造者接口的具体类,负责创建产品的各个组成部分。
4、指挥者(Director):负责调用具体建造者的创建方法,以生成最终的产品。
下面我们通过一个简单的例子来说明建造者模式的用法,假设我们要创建一个表示矩形的类,并实现一个计算面积的方法,我们需要定义一个表示矩形的抽象类:
public abstract class Shape { public abstract double getArea(); }
我们定义一个表示矩形的具体类,继承自抽象类:
public class Rectangle extends Shape { private double width; private double height; public Rectangle(double width, double height) { this.width = width; this.height = height; } @Override public double getArea() { return width * height; } }
我们需要定义一个抽象建造者类,继承自抽象类:
public abstract class Builder { protected Shape shape; public Builder() { } public abstract void setWidth(double width); public abstract void setHeight(double height); public abstract Shape build(); }
我们实现两个具体建造者类:单分式矩形建造者和双分式矩形建造者:
public class SingleSidedRectangleBuilder extends Builder { private double width; private double height; @Override public void setWidth(double width) { this.width = width; } @Override public void setHeight(double height) { this.height = height; } @Override public Shape build() { return new SingleSidedRectangle(width, height); } }
public class DoubleSidedRectangleBuilder extends Builder { private double width; private double height; @Override public void setWidth(double width) { this.width = width; } @Override public void setHeight(double height) { this.height = height; } @Override public Shape build() { return new DoubleSidedRectangle(width, height); } }
我们需要定义一个指挥者类,用于控制建造过程: