设计模式-------建造者模式

[code]
状态间的自由切换

建造者关心的是内部方法的顺序是怎么样的。。。。。他提供一个接口,让别人来制定方法执行的顺序。。。。其实是对方法制定的门面啦。。。

public abstract class CarModel{
private List<String> seq = new ArrayList<String>();//顺序类,里面放的是方法名,然后会按照次序来执行这些方法
protected abstract void start();
protected abstract void stop();
protected abstract void alarm();
protected abstract void engineBoom();

final public void run(CarModel executor){
for(int i=0;i<this.seq.size();i++){
executor.getClass().getMethod(seq.get(i)).invoke(executor);
}
}

final public void setSequence(List<String> seq){ //这个方法是给制定汽车的人用的,他想要里面的方法是什么顺序,就是什么顺序,也就是车子提供了一个可以改变方法执行顺序的接口,其实最灵活的方式就是把方法变为public ,那么方法的顺序当然可以被别人制定,但是我认为这个模式是结合了门面模式,他封装了调用的细节,也就是把调用的细节放到一个数组里面来了而已。。。。。
this.seq = seq;
}
}
public class RenzModel extends CarModel{
protected void start(){
...
}
protected void stop(){
....
}
protected void alarm(){
....
}
protected void engineBoom(){
.....
}

}

看上去这个模式很一般。。。但是如果就固定那么5,6中顺序,而且经常调用这几种顺序,怎么办,一个一个的记住。。? 不是吧。。。用方法的门面把。。建造者来为你记住这几种方案,以后调用就是了。。。
比如:状态B 可以转换为状态C 也可以转换为状态D,而状态D 呢也可以转换为状态A 或状态B,,基本上可以实现状态间自由切换,需要我们把已经有的几种状态按照一定的顺序再重新组装一下。。用建造者来记住几种状态的间切换的顺序,用状态来寻找此时合适的方法。。。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值