设计模式--建造模式

1、建造模式的定义

建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。

2、建造这模式的使用场景:

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

3、建造者模式的角色组成:

(1)builder:为创建一个产品对象的各个部件指定抽象接口。
(2)ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。
(3)Director:构造一个使用Builder接口的对象。
(4)Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

4、建造者模式的UML表示


5、建造者模式的示例

/**
 * 建造者接口
 * */
public interface Builder {
	
	void buildPartA();
	
	void buildPartB();
	
	Product getResult();

}
/**
 * 实际建造者1
 * */
public class ConcreteBuilder1 implements Builder{
	
	private Product product;
	
	public ConcreteBuilder1(){
		product=new Product();
	}

	@Override
	public void buildPartA() {
		product.add("部件A");
		
	}

	@Override
	public void buildPartB() {
		product.add("部件B");
		
	}

	@Override
	public Product getResult() {
		return product;
	}
	
}
/**
 * 实际建造者2
 * */
public class ConcreteBuilder2 implements Builder{
	
	private Product product;
	
	public ConcreteBuilder2(){
		product=new Product();
	}

	@Override
	public void buildPartA() {
		
		product.add("部件X");
		
	}

	@Override
	public void buildPartB() {
		
		product.add("部件Y");
		
	}

	@Override
	public Product getResult() {
		return product;
	}

}

/**
 * 具体产品
 * */
public class Product {
	
	List<String> parts=new ArrayList<String>();
	
	public void add(String part){
		parts.add(part);
	}
	
	public void show(){
		System.out.println("\n产品创建:");
		
		for (String part : parts) {
			
			System.out.println(part);
		}
	}

}
/**
 * 指挥者
 * */
public class Director {
	
	public void construct(Builder builder){
		
		builder.buildPartA();
		builder.buildPartB();
	}

}
测试类:

public class Test {
	
	public static void main(String[] args) {
		//指挥者
		Director director=new Director();
		//具体的建造者
		Builder builder1=new ConcreteBuilder1();
		//具体的建造者
		Builder builder2=new ConcreteBuilder2();
		//构建产品
		director.construct(builder1);
		Product product=builder1.getResult();
		product.show();
		//构建产品
		director.construct(builder2);
		product=builder2.getResult();
		product.show();
	}

}

输出:

产品创建:
部件A
部件B


产品创建:
部件X
部件Y




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值