您的位置 首页 java

java建造者模式的特点及应用场景

建造者模式

模式的定义与特点

建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。

该模式的主要优点如下:

各个具体的建造者相互独立,有利于系统的扩展。客户端不必知道产品内部组成的细节,便于控制细节风险。

其缺点如下:

产品的组成部分必须相同,这限制了其使用范围。如果产品的内部变化复杂,该模式会增加很多的建造者类。

建造者(Builder)模式和工厂模式的关注点不同:建造者模式注重零部件的组装过程,而工厂方法模式更注重零部件的创建过程,但两者可以结合使用。

(推荐视频:java视频教程)

模式的结构与实现

建造者(Builder)模式由产品、抽象建造者、具体建造者、指挥者等 4 个要素构成,现在我们来分析其基本结构和实现方法。

1. 模式的结构

建造者(Builder)模式的主要角色如下。

产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个灭部件。抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 getResult()。具体建造者(Concrete Builder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。

其结构图如下所示:

1.jpg

2. 模式的实现

(1) 产品角色:包含多个组成部件的复杂对象。

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 void show() {        //显示产品的特性    }}

(2) 抽象建造者:包含创建产品各个子部件的抽象方法。

public abstract class Builder {    //创建产品对象    protected Product product = new Product();    public abstract void buildPartA();    public abstract void buildPartB();    public abstract void buildPartC();    //返回产品对象    public Product getResult() {        return product;    }}

(3) 具体建造者:实现了抽象建造者接口。

public class ConcreteBuilder extends Builder {    public void buildPartA() {        product.setPartA("建造 PartA");    }    public void buildPartB() {        product.setPartA("建造 PartB");    }    public void buildPartC() {        product.setPartA("建造 PartC");    }}

(4) 指挥者:调用建造者中的方法完成复杂对象的创建。

public class Director {    private Builder builder;    public Director(Builder builder) {        this.builder = builder;    }    //产品构建与组装方法    public Product construct() {        builder.buildPartA();        builder.buildPartB();        builder.buildPartC();        return builder.getResult();    }}

(5) 客户端

public class Client {    public static void main(String[] args) {        Builder builder = new ConcreteBuilder();        Director director = new Director(builder);        Product product = director.construct();        product.show();    }}

模式的应用场景

建造者(Builder)模式创建的是复杂对象,其产品的各个部分经常面临着剧烈的变化,但将它们组合在一起的算法却相对稳定,所以它通常在以下场合使用。

创建的对象较复杂,由多个部件构成,各部件面临着复杂的变化,但构件间的建造顺序是稳定的。创建复杂对象的算法独立于该对象的组成部分以及它们的装配方式,即产品的构建过程和最终的表示是独立的。

本文来自php中文网,java教程栏目,欢迎学习!

文章来源:智云一二三科技

文章标题:java建造者模式的特点及应用场景

文章地址:https://www.zhihuclub.com/16151.shtml

关于作者: 智云科技

热门文章

网站地图