设计模式之建造者模式

1,什么是建造者设计模式

建造者设计模式:构造流程与表现分离,使得相同的构造流程可以创建出不同的表示.

2,为什么要使用建造者设计模式

下面是我在网上找的汉堡的制作步骤.

First 
heat oven and Cook hamburger with onion(donn‘t forget  add salt and pepper)
Second
Melt margarine, mix with flour, milk, and eggs and pour onto hamburger in pie pan
Third 
Bake 25 minutes 
Then 
Remove from oven, top with sliced tomatoes, sprinkle with cheese
After that
Bake another five to eight minutes
Finally 
Cool five minutes before eating

下面有我开始按照这个步骤做汉堡,

First 
heat oven and Cook hamburger with onion(donn‘t forget  add salt and pepper)
Second
Melt margarine, mix with flour, milk, and eggs and pour onto hamburger in pie pan
Third 
Bake 25 minutes 
Finally 
Cool five minutes before eating

这里我忘记了步骤

Then Remove from oven, top with sliced tomatoes, sprinkle with cheeseAfter thatBake another five to eight minutes

这就导致了汉堡做出来并没有那么美味.

我想我如果是麦当劳的员工肯定会被炒鱿鱼,呵呵...那为什么麦当劳的员工做汉堡很少有缺少步骤的情况发生?原因是他们规定很严,必须按照规定步骤制作汉堡,少了某个步骤就

会扣奖金或者被炒鱿鱼.而我自己在家做汉堡就不用担心这么多,少了某个步骤大不了重新做就可以了.

其实刚才所说的麦当劳汉堡制作过程就体现了建造者设计模式。为了不让制作过程缺少某个步骤,而且可以根据相同的制作步骤生产出不同的产品.

3,怎么使用建造者设计模式

UML类图

之前有讲到过依赖倒转原则,抽象不依赖于细节,细节要依赖于抽象.建造者设计模式也遵守了这个设计原则,在这实例中HamburgerBuilder和BeefHamburger,ChickenHamburger

这些是细节,Hamburger接口就是抽象。

具体实现代码:

Hamburger.interface

public interface Hamburger {
	public void friststep();
	public void secondstep();
	public void thirdthstep();
	public void fourthstep();
}

BeefHamburger.class

public class BeefHamburger implements Hamburger{

	@Override
	public void friststep() {
		// TODO Auto-generated method stub
		System.out.println("制作牛肉汉堡步骤一");
	}

	@Override
	public void secondstep() {
		// TODO Auto-generated method stub
		System.out.println("制作牛肉汉堡步骤二");
		
	}

	@Override
	public void thirdthstep() {
		// TODO Auto-generated method stub
		System.out.println("制作牛肉汉堡步骤三");
	}

	@Override
	public void fourthstep() {
		// TODO Auto-generated method stub
		System.out.println("制作牛肉汉堡步骤四");
	}

}

ChickenHamburger.class

public class ChickenHamburger implements Hamburger{

	@Override
	public void friststep() {
		// TODO Auto-generated method stub
		System.out.println("制作鸡肉汉堡步骤一");
	}

	@Override
	public void secondstep() {
		// TODO Auto-generated method stub
		System.out.println("制作鸡肉汉堡步骤二");
	}

	@Override
	public void thirdthstep() {
		// TODO Auto-generated method stub
		System.out.println("制作鸡肉汉堡步骤三");
	}

	@Override
	public void fourthstep() {
		// TODO Auto-generated method stub
		System.out.println("制作鸡肉汉堡步骤四");
	}

}

HamburgerBuilder.class

public class HamburgerBuilder {
	public void createHamburger(Hamburger hamburger){
		hamburger.friststep();
		hamburger.secondstep();
		hamburger.thirdthstep();
		hamburger.fourthstep();
	}
}

Main.class

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		HamburgerBuilder hamburgerBuilder = new HamburgerBuilder();
		hamburgerBuilder.createHamburger(new BeefHamburger());
		hamburgerBuilder.createHamburger(new ChickenHamburger());
	}

}

最后输出:

制作牛肉汉堡步骤一
制作牛肉汉堡步骤二
制作牛肉汉堡步骤三
制作牛肉汉堡步骤四
-----------------------------------
制作鸡肉汉堡步骤一
制作鸡肉汉堡步骤二
制作鸡肉汉堡步骤三
制作鸡肉汉堡步骤四

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值