建造者模式是一种创建型设计模式,它将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(依赖倒转)。建造者模式的优点包括:,,- 封装性好:创建和使用分离;,- 扩展性好:建造类之间相互独立,在一定程度上解耦;,- 产品建造过程精细化:该模式注重产品创建的整个过程,将复杂的步骤拆解得到多个相对简单的步骤,使得系统流程更清晰,且对细节的把控更精准;,- 易于扩展:如果有新产品需求,只需要添加一个建造者类即可,不需要改动之前的代码,符合开闭原则。
在编程领域,设计模式是一种被广泛应用的解决方案,它们可以帮助开发者解决特定问题,提高代码的可读性和可维护性,我们将重点讨论一种设计模式——建造者模式。
建造者模式(Builder Pattern)是一种创建型模式,它提供了一种链式调用的方式来构建复杂对象,这种模式的主要目的是将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示,这种模式适用于当一个类的构建过程与它的表示紧密相关时,例如创建一个图形用户界面(GUI)或者编译一段源代码。
建造者模式的核心思想是将复杂的构建过程封装在一个专门的建造者类中,这个类负责生成表示对象的各个组成部分,这样,客户端只需要与建造者类交互,而不需要关心具体的表示对象是如何构建的,当需要改变表示对象的类型时,只需提供一个新的建造者类即可,而无需修改现有的客户端代码。
下面我们通过一个简单的例子来说明建造者模式的用法,假设我们要创建一个表示矩形的类,这个类需要包含宽度和高度两个属性,我们可以使用建造者模式来实现这个类的创建过程。
我们定义一个表示矩形的抽象类Rectangle
,并为其添加width
和height
属性以及相应的getter方法:
public abstract class Rectangle { private int width; private int height; public abstract void setWidth(int width); public abstract void setHeight(int height); public int getWidth() { return width; } public int getHeight() { return height; } }
我们定义一个具体的矩形类Square
,它继承自Rectangle
类:
public class Square extends Rectangle { @Override public void setWidth(int width) { this.width = width; } @Override public void setHeight(int height) { this.height = height; } }
我们定义一个建造者接口Builder
,并为其添加用于设置矩形属性的方法:
public interface Builder { void buildWidth(int width); void buildHeight(int height); Rectangle getResult(); }
我们实现一个具体的建造者类SquareBuilder
,它实现了Builder
接口:
public class SquareBuilder implements Builder { private int width; private int height; private Square rectangle; public SquareBuilder() { rectangle = new Square(); } @Override public void buildWidth(int width) { this.width = width; } @Override public void buildHeight(int height) { this.height = height; } @Override public Square getResult() { rectangle.setWidth(width); rectangle.setHeight(height); return rectangle; } }
我们可以在客户端代码中使用SquareBuilder
来创建一个矩形对象:
public class Client { public static void main(String[] args) { Builder builder = new SquareBuilder(); builder.buildWidth(10).buildHeight(20).getResult(); // 结果为一个宽度为10、高度为20的矩形对象 } }