学习:生成器(Builder)

本文介绍了Builder设计模式的概念及其在Java中的应用实例。通过将复杂对象的构建与其表示分离,Builder模式能够支持灵活的构造过程,同时允许创建不同表示的同一类型对象。文章提供了具体的代码示例来说明如何使用Builder模式,并探讨了其优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用来构建复杂的实例,java的StringBuilder就是一个Builder模式的例子。

 

意图:

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

 

结构:


 

代码示例:

Builder类

public abstract class Builder {
	protected String product;
	
	public Builder() {
		product = new String("");
	}

	public void buildPart(String part) {
		//默认空实现
	}
	
	public String getResult() {
		return product;
	}
}

 

ConcreteBuilder类

public class ConcreteBuilder extends Builder {

	@Override
	public void buildPart(String part) {
		product += part;
	}
}
 

 

Director类

public class Director {
	private Builder builder;
	
	public Director(Builder builder) {
		this.builder = builder;
	}
	
	public void Construct() {
		for (int i = 0; i < 10; i++) {
			builder.buildPart("aaa");
		}
	}
	
	public String getResult() {
		return builder.getResult();
	}
}

 

调用

public class Client {

	public static void main(String[] args) {
		Director dir = new Director(new ConcreteBuilder());
		dir.Construct();
		System.out.println(dir.getResult());
	}
}

 

优点:

使你可以改变一个产品的内部表示;

它将构造代码和表示代码分开;

使你可对构造过程进行更精细的控制;

 

适用:

当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
当构造过程必须允许被构造的对象有不同的表示时。

 

相关模式:

    Abstract Factory和Builder比较相似。主要的区别是Builder模式着重于一步步构造一个复杂对象。而 Abstract Factory着重于多个系列的产品对象(简单的或是复杂的)。Builder在最后的一步返回产品,而对于 Abstract Factory来说,产品是立即返回的。

    Composite通常是用Builder生成的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值