House.java
public class House { private String base; private String wall; private String roof; public House(){ } public House(String base, String wall, String roof) { this.base = base; this.wall = wall; this.roof = roof; } public String getBase() { return base; } public void setBase(String base) { this.base = base; } public String getWall() { return wall; } public void setWall(String wall) { this.wall = wall; } public String getRoof() { return roof; } public void setRoof(String roof) { this.roof = roof; } @Override public String toString() { return "House{" + "baise=‘" + base + ‘\‘‘ + ", wall=‘" + wall + ‘\‘‘ + ", roofed=‘" + roof + ‘\‘‘ + ‘}‘; } }
HouseBuild.java
public abstract class HouseBuild { //产品 protected House house = new House(); public abstract void buildBase(); public abstract void buildWall(); public abstract void buildroof(); //返回产品 public House buildHouse(){ return house; } }
CommonHouse.java
public class CommonHouse extends HouseBuild { @Override public void buildBase() { house.setBase("common House base"); System.out.println("build common House base"); } @Override public void buildWall() { house.setWall("common House wall"); System.out.println("build common House wall"); } @Override public void buildroof() { house.setRoof("common House roof"); System.out.println("build common House roof"); } }
HighBuilding.java
public class HighBuilding extends HouseBuild { @Override public void buildBase() { house.setBase("HighBuilding base"); System.out.println("build HighBuilding base"); } @Override public void buildWall() { house.setWall("HighBuilding wall"); System.out.println("build HighBuilding wall"); } @Override public void buildroof() { house.setRoof("HighBuilding roof"); System.out.println("build HighBuilding roof"); } }
HouseDirector.java
public class HouseDirector { private HouseBuild houseBuild; public HouseDirector(HouseBuild houseBuild) { this.houseBuild = houseBuild; } public void setHouseBuild(HouseBuild houseBuild) { this.houseBuild = houseBuild; } //生成过程 public House constructHouse(){ houseBuild.buildBase(); houseBuild.buildWall(); houseBuild.buildroof(); return houseBuild.buildHouse(); } }
BuildeDemo.java
public class BuildDemo { public static void main(String[] args) { //指定建造时每个过程的具体实施 HouseBuild houseBuild = new CommonHouse(); //指定整体生产流程,将具体过程组合 HouseDirector houseDirector = new HouseDirector(houseBuild); //生成产品 House house = houseDirector.constructHouse(); System.out.println(house); } }
原文:https://www.cnblogs.com/zhihaospace/p/12484090.html