最新消息

Java生成器模式(builder)

设计模式 金牌剑客 1485℃ 0评论

定义

生成器模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。

功能

生成器模式主要的功能是构建复杂的产品,而且是细化的、分步骤的构建产品,也就是生成器模式重在一步一步解决构造复杂对象的问题,更为重要的是,这个构建过程是统一的、固定不变的,变化的部分放在生成器部分,只要配置不同的生成器,那么同样的构建过程就会构建出不同的产品。

UML类图

builder

IBuilder接口定义了如何构建各个组件

Director负责整体的构建算法,而且通常是分步骤执行的

Java代码

IBuilder.java

public interface IBuilder {
	public void buildPart1();
	public void buildPart2();
	public Product getResult();
}

Director.java

public class Director {
	private IBuilder builder;
	public Director(IBuilder builder) {
		this.builder = builder;
	}
	public void construct() {
		builder.buildPart1();
		builder.buildPart2();
	}
}

ConcreteBuilder.java

public class ConcreteBuilder implements IBuilder {
	private Product product;
	public ConcreteBuilder() {
		product = new Product();
	}
	public void buildPart1() {
		product.setPart1("part1");
	}
	public void buildPart2() {
		product.setPart2("part2");
	}
	public Product getResult() {
		return product;
	}
}

Product.java

public class Product {
	private String part1;
	public String part2;
	public String getPart1() {
		return part1;
	}
	public void setPart1(String part1) {
		this.part1 = part1;
	}
	public String getPart2() {
		return part2;
	}
	public void setPart2(String part2) {
		this.part2 = part2;
	}
	@Override
	public String toString() {
		return "Product [part1=" + part1 + ", part2=" + part2 + "]";
	}
}

Client.java

public class Client {
	public static void main(String[] args) {
		IBuilder builder = new ConcreteBuilder();
		Director director = new Director(builder);
		director.construct();
		Product product = builder.getResult();
		System.out.println(product);
	}
}

转载请注明:QualInfo » Java生成器模式(builder)

喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址