To build a house, we will take several steps :
1. build foundation
2. build frame
3. build exterior
4. build interior
Use an abstract class HouseBuilder to define these 4 steps.
Any subclass of HouseBuilder will follow these 4 steps to build house (that is to say to implement these 4 methods in the subclass)
// set steps for building a house
abstract class HouseBuilder {
protected House house = new House();
protected String showProgress() {
return house.toString();
}
abstract public void buildFoundation();
abstract public void buildFrame();
abstract public void buildExterior();
abstract public void buildInterior();
}
class OneStoryHouse extends HouseBuilder {
public OneStoryHouse(String features) {
house.setType(this.getClass() + " " + features);
}
public void buildFoundation() {
// doEngineering()
// doExcavating()
// doPlumbingHeatingElectricity()
// doSewerWaterHookUp()
// doFoundationInspection()
house.setProgress("foundation is done");
}
public void buildFrame() {
// doHeatingPlumbingRoof()
// doElectricityRoute()
// doDoorsWindows()
// doFrameInspection()
house.setProgress("frame is done");
}
public void buildExterior() {
// doOverheadDoors()
// doBrickWorks()
// doSidingsoffitsGutters()
// doDrivewayGarageFloor()
// doDeckRail()
// doLandScaping()
house.setProgress("Exterior is done");
}
public void buildInterior() {
// doAlarmPrewiring()
// doBuiltinVacuum()
// doInsulation()
// doDryWall()
// doPainting()
// doLinoleum()
// doCabinet()
// doTileWork()
// doLightFixtureBlinds()
// doCleaning()
// doInteriorInspection()
house.setProgress("Interior is under going");
}
}
class TwoStoryHouse extends HouseBuilder {
public TwoStoryHouse(String features) {
house.setType(this.getClass() + " " + features);
}
public void buildFoundation() {
// doEngineering()
// doExcavating()
// doPlumbingHeatingElectricity()
// doSewerWaterHookUp()
// doFoundationInspection()
house.setProgress("foundation is done");
}
public void buildFrame() {
// doHeatingPlumbingRoof()
// doElectricityRoute()
// doDoorsWindows()
// doFrameInspection()
house.setProgress("frame is under construction");
}
public void buildExterior() {
// doOverheadDoors()
// doBrickWorks()
// doSidingsoffitsGutters()
// doDrivewayGarageFloor()
// doDeckRail()
// doLandScaping()
house.setProgress("Exterior is waiting to start");
}
public void buildInterior() {
// doAlarmPrewiring()
// doBuiltinVacuum()
// doInsulation()
// doDryWall()
// doPainting()
// doLinoleum()
// doCabinet()
// doTileWork()
// doLightFixtureBlinds()
// doCleaning()
// doInteriorInspection()
house.setProgress("Interior is not started yet");
}
}
No comments:
Post a Comment
Note: only a member of this blog may post a comment.