设计模式-建造者模式_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 设计模式-建造者模式

设计模式-建造者模式

 2013/11/12 0:39:32  edr_  程序员俱乐部  我要评论(0)
  • 摘要:建造者模式将一个复杂对象的构造与它的表示分离,使得同样的构建过程可以创建不同的表示。1、例子解释:同样一种菜肴,同样的菜谱,不同的厨师炒出品位可能不一样,虽然加入的佐料一样,但是北方的厨师炒的口味可能比较重,而南方的厨师的则比较清淡。这就是“同样的构建过程可以创建不同的表示”。2、UML类图:Product类:具体的产品;Director类:指挥者,构建一个使用Builder接口的对象;Builder接口:是为创建一个Product对象的各个组件指定的抽象接口;ConcreteBuilder类
  • 标签:模式 设计 设计模式
建造者模式
将一个复杂对象的构造与它的表示分离,使得同样的构建过程可以创建不同的表示。

1、例子解释:
同样一种菜肴,同样的菜谱,不同的厨师炒出品位可能不一样,虽然加入的佐料一样,但是北方的厨师炒的口味可能比较重,而南方的厨师的则比较清淡。这就是“同样的构建过程可以创建不同的表示”。

2、UML类图:

Product类:具体的产品;
Director类:指挥者,构建一个使用Builder接口的对象;
Builder接口:是为创建一个Product对象的各个组件指定的抽象接口;
ConcreteBuilder类:具体的建造者,实现Builder接口,构造和装配各个部件。



3、例子代码:
class="java">
package test.patterns.builder;
//产品
class Food{
	public StringBuffer smell = new StringBuffer();
}
//指挥者
class Diretor{
	Cooks cooker;;
	public Diretor(Cooks cooker) {
		this.cooker = cooker;
	}
	public void cook(){
		cooker.add_oil();
		cooker.add_salt();
	}
}
//抽象建造者
abstract class Cooks {
	public abstract void add_oil();
	public abstract void add_salt();
}
//具体建造者-东北
class Cook_Dongbei extends Cooks{
	public Food food = new Food();
	@Override
	public void add_oil() {
		food.smell.append("add_oil more ");
		System.out.println("add_oil more~");
	}
	@Override
	public void add_salt() {
		food.smell.append("add_salt more");
		System.out.println("add_salt more~");
	}
	public Food getFood() {
		return food;
	}
}
//具体建造者-南方
class Cook_Guangdong extends Cooks{
	//...与上边类似
}
//测试代码
public static void main(String[] args) {
		Cook_Dongbei cook_dongbei =new Cook_Dongbei();
		Diretor diretor = new Diretor(cook_dongbei);
		diretor.cook();
		Food food = cook_dongbei.getFood();
		System.out.println(food.smell);
	}


4、应用
JDK:
java.lang.StringBuilder#append()
java.lang.StringBuffer#append()

游戏场景中需要自定义人物时应该也可以用到。身高:高的,矮的;体型:胖瘦;皮肤:黑白黄;运动能力:偏进攻,偏防守,攻防兼备全能型;···

以上参考自JavaWeb设计模式之道以及网络。

Have a nice day~




  • 大小: 40.8 KB
  • 查看图片附件
上一篇: 年度烧包之作 下一篇: 没有下一篇了!
发表评论
用户名: 匿名