package Builder;
//建造者模式
public class AirShip {
private orbitalModule orbitalModule;
private engine engine;
private escapeTower escapeTower;
public orbitalModule getOrbitalModule() {
return orbitalModule;
}
public void setOrbitalModule(orbitalModule orbitalModule) {
this.orbitalModule = orbitalModule;
}
public Builder.engine getEngine() {
return engine;
}
public void setEngine(Builder.engine engine) {
this.engine = engine;
}
public Builder.escapeTower getEscapeTower() {
return escapeTower;
}
public void setEscapeTower(Builder.escapeTower escapeTower) {
this.escapeTower = escapeTower;
}
}
class orbitalModule{
private String name;
public orbitalModule(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class engine{
private String name;
public engine(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class escapeTower{
private String name;
public escapeTower(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package Builder;
public interface AirBuilder {
engine builderengine();
orbitalModule builderorbitalModule();
escapeTower builderescapeTower();
}
package Builder;
public interface AirDirector {
AirShip createrShip(); //组装飞船
}
package Builder;
public class audiAirBuilder implements AirBuilder{
public engine builderengine() {
System.out.println("建造奥迪发动机");
return new engine("奥迪发动机");
}
public orbitalModule builderorbitalModule() {
System.out.println("奥迪牌轨道仓");
return new orbitalModule("奥迪发轨道仓");
}
public escapeTower builderescapeTower() {
System.out.println("建造奥迪逃生舱");
return new escapeTower("奥迪逃生船");
}
}
package Builder;
public class audiDirector implements AirDirector {
private AirBuilder builder;
public audiDirector(AirBuilder builder){
this.builder=builder;
}
public AirShip createrShip() {
engine e= builder.builderengine();
orbitalModule o =builder.builderorbitalModule();
escapeTower es =builder.builderescapeTower();
AirShip ship =new AirShip();
//组装部件
ship.setEngine(e);
ship.setEscapeTower(es);
ship.setOrbitalModule(o);
return ship;
}
}
package Builder;
public class client {
public static void main(String[] args) {
AirDirector di =new audiDirector(new audiAirBuilder());
AirShip ship =di.createrShip();
System.out.println(ship.getEngine().getName());
}
}
运行结果: