建造者模式

看第一遍书的时候,由于是走马观花的看了一遍,就总是将装饰模式和建造者模式混淆,然而,他们是有很大差别的。

建造者模式:将一个复杂的构建与表示分离,这样,相同的构建过程能创建出不同的表示。

就像一家饮品店的MM调制饮品一样,工序是相同的,只是配料略有不同,但是饮品的口味却千差万别,以此为例

建造者模式结构如下图


对应的代码

import java.util.ArrayList;
import java.util.List;

class Product{
	List<String> parts = new ArrayList<String>();
	public void Add(String part){
		parts.add(part);
	}
	public void show(){
		System.out.println("完成步骤分别是:"+parts);
	}
}
abstract class Build{
	public abstract void step1(String part1);
	public abstract void step2(String part2);
	public abstract void step3(String part3);
}
class Builder extends Build{
	//在“制造”产品的时候,需要“知道”一个产品
	Product product = new Product();
	@Override
	public void step1(String part1) {
		// TODO Auto-generated method stub
		product.Add(part1);
	}
	@Override
	public void step2(String part2) {
		product.Add(part2);
	}
	@Override
	public void step3(String part3) {
		// TODO Auto-generated method stub
		product.Add(part3);
	}
	public void show(){
		product.show();
	}
} 
/*
 * 完成组建
 */
class Director{
	public void result(Builder build,String step1,String step2,String step3){
		build.step1(step1);
		build.step2(step2);
		build.step3(step3);
		build.show();
	}
}
public class Build_Director {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	Director director = new Director();
    Builder builder = new Builder();
    Builder builder2 = new Builder();
    System.out.println("小美的饮品:");
    director.result(builder,"添加牛奶" ,"添加果酱","封口");
    System.out.println("小丽的饮品:");
    director.result(builder2,"添加布丁" ,"添加牛奶","封口");
	}

}



运行结果如下

小美的饮品:
完成步骤分别是:[添加牛奶, 添加果酱, 封口]
小丽的饮品:
完成步骤分别是:[添加布丁, 添加牛奶, 封口]

  当我们需要实现一系列步骤相同,细节不同的的业务时,建造者模式是很好的选择

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值