工厂模式例子(一)
对工厂的抽象
?
public interface Builder {void buildMotor();void buildWheels();void paintColor();AbstractProduct getProduct();}?bus工厂
public class BusBuilder implements Builder {private String motor;private int wheels;private Color color;@Overridepublic void buildMotor() {// TODO Auto-generated method stubthis.motor = "Bus's motor";}@Overridepublic void buildWheels() {// TODO Auto-generated method stubthis.wheels = 8;}@Overridepublic void paintColor() {// TODO Auto-generated method stubthis.color = Color.green;}@Overridepublic AbstractProduct getProduct() {AbstractProduct p = new Bus ();p.setColor(color);p.setMotor(motor);p.setWheels(wheels);return p;}}?Car工厂
public class CarBuilder implements Builder{private String motor;private int wheels;private Color color;@Overridepublic void buildMotor() {this.motor = "Car's motor";}@Overridepublic void buildWheels() {this.wheels = 4;}@Overridepublic void paintColor() {this.color = Color.black;}@Overridepublic AbstractProduct getProduct() {AbstractProduct p = new Car ();p.setColor(color);p.setMotor(motor);p.setWheels(wheels);return p;}}?Trunk工厂
public class TruckBuilder implements Builder {private String motor;private int wheels;private Color color;@Overridepublic void buildMotor() {this.motor = "Truck's motor";}@Overridepublic void buildWheels() {this.wheels = 12;}@Overridepublic void paintColor() {this.color = Color.gray;}@Overridepublic AbstractProduct getProduct() {AbstractProduct p = new Truck ();p.setColor(color);p.setMotor(motor);p.setWheels(wheels);return p;}}?工厂控制
public class Director {private Builder builder;public Director(Builder builder){this.builder = builder ;}public void construct(){builder.buildMotor();builder.buildWheels();builder.paintColor();}}??