建造者模式【Builder Pattern】
来源:互联网 发布:什么软件可以看港片 编辑:程序博客网 时间:2024/04/26 06:54
Builder,建造模式:将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示。
package com.cbf4life;
import java.util.ArrayList;
public abstract class CarModel {
private ArrayList<String> sequence = new ArrayList<String>();
protected abstract void start();
protected abstract void stop();
protected abstract void alarm();
protected abstract void engineBoom();
final public void run() {
for(int i=0;i<this.sequence.size();i++){
String actionName = this.sequence.get(i);
if(actionName.equalsIgnoreCase("start")){
this.start();
}else if(actionName.equalsIgnoreCase("stop")){
this.stop();
}else if(actionName.equalsIgnoreCase("alarm")){
this.alarm();
}else if(actionName.equalsIgnoreCase("engine boom")){
this.engineBoom();
}
}
}
final public void setSequence(ArrayList<String> sequence){
this.sequence = sequence;
}
}
package com.cbf4life;
public class BenzModel extends CarModel {
@Override
protected void alarm() {
System.out.println("奔驰车的喇叭声音是这个样子的...");
}
@Override
protected void engineBoom() {
System.out.println("奔驰车的引擎是这个声音的...");
}
@Override
protected void start() {
System.out.println("奔驰车跑起来是这个样子的...");
}
@Override
protected void stop() {
System.out.println("奔驰车应该这样停车...");
}
}
package com.cbf4life;
public class BMWModel extends CarModel {
@Override
protected void alarm() {
System.out.println("宝马车的喇叭声音是这个样子的...");
}
@Override
protected void engineBoom() {
System.out.println("宝马车的引擎是这个声音的...");
}
@Override
protected void start() {
System.out.println("宝马车跑起来是这个样子的...");
}
@Override
protected void stop() {
System.out.println("宝马车应该这样停车...");
}
}
package com.cbf4life;
import java.util.ArrayList;
public abstract class CarBuilder {
public abstract void setSequence(ArrayList<String> sequence);
public abstract CarModel getCarModel();
}
package com.cbf4life;
import java.util.ArrayList;
public class BenzBuilder extends CarBuilder {
private BenzModel benz = new BenzModel();
@Override
public CarModel getCarModel() {
return this.benz;
}
@Override
public void setSequence(ArrayList<String> sequence) {
this.benz.setSequence(sequence);
}
}
package com.cbf4life;
import java.util.ArrayList;
public class BMWBuilder extends CarBuilder {
private BMWModel bmw = new BMWModel();
@Override
public CarModel getCarModel() {
return this.bmw;
}
@Override
public void setSequence(ArrayList<String> sequence) {
this.bmw.setSequence(sequence);
}
}
package com.cbf4life;
import java.util.ArrayList;
public class Client {
public static void main(String[] args) {
ArrayList<String> sequence = new ArrayList<String>();
sequence.add("engine boom");
sequence.add("start");
sequence.add("stop");
BenzBuilder benzBuilder = new BenzBuilder();
benzBuilder.setSequence(sequence);
BenzModel benz = (BenzModel)benzBuilder.getCarModel();
benz.run();
BMWBuilder bmwBuilder = new BMWBuilder();
bmwBuilder.setSequence(sequence);
BMWModel bmw = (BMWModel)bmwBuilder.getCarModel();
bmw.run();
}
}
- 建造者模式(Builder Pattern)
- 建造者模式(Builder Pattern)
- 建造者模式(Builder Pattern)
- 建造者模式【BUILDER PATTERN 】
- 建造者模式【Builder Pattern】
- 建造者模式(Builder Pattern)
- 建造者模式(Builder Pattern)
- 建造者模式(Builder Pattern)
- 建造者模式-Builder Pattern
- 建造者模式Builder Pattern
- 建造者模式Builder Pattern
- 建造者模式(Builder Pattern)
- Builder Pattern(建造者模式)
- 建造者模式【Builder Pattern】
- 建造者模式(Builder Pattern)
- 建造者模式【Builder Pattern】
- 建造者模式(Builder Pattern)
- 建造者模式(builder pattern)
- 条款31 让函数根据一个以上的对象类型来决定如何虚化
- amcharts_flash_1.6(绝版了)破解说明
- 集合框架 Queue---ArrayBlockingQueue
- VC++的心得
- 把串口读写重定向到tcp
- 建造者模式【Builder Pattern】
- [Java]图解Perfect shuffle[Jai04]
- 应用程序的名字分两行显示
- MFC 进度条
- linux内核启动分析
- 设计模式(24) ------------单例模式
- 重新发布本人所有博客文章中涉及的代码与工具(大部分是C++和Java)
- emacs编辑二进制文件
- 修改盘符