设计模式-建造者模式

[b][size=large]建造者模式[/size][/b]
将一个复杂对象的构造与它的表示分离,使得同样的构建过程可以创建不同的表示。

[b][color=green]1、例子解释:[/color][/b]
同样一种菜肴,同样的菜谱,不同的厨师炒出品位可能不一样,虽然加入的佐料一样,但是北方的厨师炒的口味可能比较重,而南方的厨师的则比较清淡。这就是“同样的构建过程可以创建不同的表示”。
[b][color=green]
2、UML类图:[/color][/b]
[color=brown]Product类:具体的产品;
Director类:指挥者,构建一个使用Builder接口的对象;
Builder接口:是为创建一个Product对象的各个组件指定的抽象接口;
ConcreteBuilder类:具体的建造者,实现Builder接口,构造和装配各个部件。[/color]
[img]http://dl2.iteye.com/upload/attachment/0091/0991/03068967-1449-3955-9d92-c29fd79fc78d.jpg[/img]

[b][color=green]3、例子代码:[/color][/b]

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);
}


[b][color=green]4、应用[/color][/b]
JDK:
java.lang.StringBuilder#append()
java.lang.StringBuffer#append()

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

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

[size=large][color=brown]Have a nice day~[/color][/size] :arrow:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值