建造者模式
定义:将复杂的构建和表示分离,使得同样的构建可以创建不同的表示。
Director:导演:建立不同的生产的过程。
Builder:将产品和它的生产过程装配,返回这个产品。
package com.whale;
import java.util.ArrayList;
public class Director {
private ArrayList<String> sequence=new ArrayList();
private BenzBuilder bb=new BenzBuilder();
private BWMBuilder bw=new BWMBuilder();
public BenzModel getABenzModel(){
this.sequence.clear();
this.sequence.add("start");
this.sequence.add("stop");
this.bb.setSequence(this.sequence);
return (BenzModel)this.bb.getCarModel();
}
public BenzModel getBBenzModel(){
this.sequence.clear();
this.sequence.add("start");
this.sequence.add("stop");
this.bb.setSequence(this.sequence);
return (BenzModel)this.bb.getCarModel();
}
public BWMModel getCBWMModel(){
this.sequence.clear();
this.sequence.add("start");
this.sequence.add("alarm");
this.sequence.add("stop");
this.bb.setSequence(this.sequence);
return (BWMModel)this.bw.getCarModel();
}
public BWMModel getDBWMModel(){
this.sequence.clear();
this.sequence.add("start");
this.bb.setSequence(this.sequence);
return (BWMModel)this.bw.getCarModel();
}
}
导演创建了几种不同的顺序组装
package com.whale;
import java.util.ArrayList;
public abstract class CarBuilder {
public abstract void setSequence(ArrayList<String> sequence);
public abstract CarModel getCarModel();
}
package com.whale;
import java.util.ArrayList;
public class BWMBuilder extends CarBuilder{
private BWMModel bwm=new BWMModel();
public void setSequence(ArrayList<String> sequence) {
this.bwm.setSequence(sequence);
}
public CarModel getCarModel() {
return this.bwm;
}
}
package com.whale;
import java.util.ArrayList;
public class BenzBuilder extends CarBuilder {
private BenzModel benz=new BenzModel();
@Override
public void setSequence(ArrayList<String> sequence) {
this.benz.setSequence(sequence);
}
@Override
public CarModel getCarModel() {
return this.benz;
}
}
产品
package com.whale;
import java.util.ArrayList;
public abstract class CarModel {
public abstract void start();
public abstract void stop();
public abstract void alarm();
public abstract void engineBoom();
private ArrayList<String> sequence =new ArrayList();
public final void setSequence(ArrayList<String> sequence){
this.sequence=sequence;
}
}
package com.whale;
public class BWMModel extends CarModel{
@Override
public void start() {
System.out.println("BWM start");
}
@Override
public void stop() {
System.out.println("BWM stop");
}
@Override
public void alarm() {
System.out.println("BWM alarm");
}
@Override
public void engineBoom() {
System.out.println("BWM engineBoom");
}
}
package com.whale;
public class BenzModel extends CarModel{
@Override
public void start() {
System.out.println("benz start");
}
@Override
public void stop() {
System.out.println("benz stop");
}
@Override
public void alarm() {
System.out.println("benz alarm");
}
@Override
public void engineBoom() {
System.out.println("benz engineBoom");
}
}
总结: