建造者模式是创建型模式的一种,有人将建造者模式解释为抽象工厂模式和最后的main方法结合起来得到的,这个解释过于简单
这里举个例子说明,首先一个model模型
public abstract class model { public ArrayList<String> sequence =new ArrayList<String>(); protected abstract void start(); protected abstract void stop(); public void run() { //循环一遍,谁在前,就先执行谁 for(int i=0;i<this.sequence.size();i++){ String actionName = this.sequence.get(i); if(actionName.equalsIgnoreCase("start")){ //如果是start关键字, this.start(); //开启汽车 }else if(actionName.equalsIgnoreCase("stop")){ //如果是stop关键字 this.stop(); //停止汽车 } } } }
public class ThreeModel extends model{ @Override protected void start() { // TODO Auto-generated method stub System.out.println("三轮的启动"); } @Override protected void stop() { // TODO Auto-generated method stub System.out.println("三轮的关闭"); } }
public class FourModel extends model{ @Override protected void start() { // TODO Auto-generated method stub System.out.println("四轮的启动"); } @Override protected void stop() { // TODO Auto-generated method stub System.out.println("四轮的关闭"); } }
public abstract class carBuilder { public abstract void setSequence(ArrayList<String> sequence); public abstract model getModel(); }
public class ThreeCar extends carBuilder { ThreeModel three = new ThreeModel(); @Override public void setSequence(ArrayList<String> sequence) { // TODO Auto-generated method stub three.sequence = sequence; } @Override public model getModel() { // TODO Auto-generated method stub return three; } }
public class FourCar extends carBuilder { FourModel four = new FourModel(); @Override public void setSequence(ArrayList<String> sequence) { // TODO Auto-generated method stub four.sequence = sequence; } @Override public model getModel() { // TODO Auto-generated method stub return four; } }
public class Director { private ArrayList<String> sequence = new ArrayList(); FourCar four = new FourCar(); ThreeCar three = new ThreeCar(); public ThreeModel getThreeModel(){ this.sequence.clear(); this.sequence.add("start"); this.sequence.add("stop"); this.three.setSequence(sequence); return this.three.three; } public FourModel getFourModel(){ this.sequence.clear(); this.sequence.add("stop"); this.sequence.add("start"); this.four.setSequence(sequence); return this.four.four; } }
public class test { public static void main(String[] args) { Director d = new Director(); for (int i = 0; i < 10; i++) { d.getFourModel().run(); } for (int i = 0; i < 10; i++) { d.getThreeModel().run(); } } }