建造者模式 java_java的建造者模式可以应用在什么地方

java的建造者模式可以应用在什么地方

发布时间:2020-06-24 09:17:50

来源:亿速云

阅读:182

作者:Leah

java的建造者模式可以应用在什么地方?这篇文章运用了实例代码展示,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

建造者模式

模式的定义与特点

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

该模式的主要优点如下:

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

其缺点如下:

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

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

模式的结构与实现

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

1. 模式的结构

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

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

其结构图如下所示:

b4ab3b1a55a9943b5f09e3b6f021d9c8.png

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

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

到此为止, 关于java的建造者模式有了一个基础的认识, 但是对于具体的使用方法还是需要多加巩固和练习,如果想了解更多相关内容,请关注亿速云行业资讯。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值