建造者模式簡介
本文介紹了建造者模式並附有java程式碼實現demo。內容僅供參考使用,有不足之處請及時指出,也歡迎大家交流探討。
建造者模式
建造者模式是建立型模式的一種,其隱藏了構建物件的具體過程。
場景
假設你需要一座房子,而建造房子需要很多流程,很多工作,但你並不需要關心這些,你只需將你想要的房子告訴承包商即可,承包商會將房子建設好。這種場景可以使用建造者模式。
示例
假設房子由地基,框架,牆體,頂部構成。
public class House { private String base; private String frame; private String wall; private String top; public String getBase() { return base; } public void setBase(String base) { this.base = base; } public String getFrame() { return frame; } public void setFrame(String frame) { this.frame = frame; } public String getWall() { return wall; } public void setWall(String wall) { this.wall = wall; } public String getTop() { return top; } public void setTop(String top) { this.top = top; } @Override public String toString() { return "House{" + "base='" + base + '\'' + ", frame='" + frame + '\'' + ", wall='" + wall + '\'' + ", top='" + top + '\'' + '}'; } }
房子建造抽象類
abstract class HouseBuilder { protected House house = new House(); public abstract void buildBase(); public abstract void buildFrame(); public abstract void buildWall(); public abstract void buildTop(); }
平房建造類
public class BungalowHouseBuilder extends HouseBuilder { @Override public void buildBase() { house.setBase("平房地基"); } @Override public void buildFrame() { house.setFrame("平房框架"); } @Override public void buildWall() { house.setWall("平房牆體"); } @Override public void buildTop() { house.setTop("平房頂部"); } }
別墅建造類
public class VillaHouseBuilder extends HouseBuilder { @Override public void buildBase() { house.setBase("別墅地基"); } @Override public void buildFrame() { house.setFrame("別墅框架"); } @Override public void buildWall() { house.setWall("別墅牆體"); } @Override public void buildTop() { house.setTop("別墅頂部"); } }
房屋建造導演類
public class HouseBuildDirector { private HouseBuilder houseBuilder; public HouseBuildDirector(HouseBuilder houseBuilder) { this.houseBuilder = houseBuilder; } public House buildHose() { houseBuilder.buildBase(); houseBuilder.buildFrame(); houseBuilder.buildWall(); houseBuilder.buildTop(); return houseBuilder.house; } }
告知承包商建造一座平房。
BungalowHouseBuilder bungalowHouseBuilder = new BungalowHouseBuilder(); HouseBuildDirector houseBuildDirector = new HouseBuildDirector(bungalowHouseBuilder); House house = houseBuildDirector.buildHose(); System.out.println(house.toString());
輸出
House{base='平房地基', frame='平房框架', wall='平房牆體', top='平房頂部'}
建造者模式結構
建造者模式主要分為Builder和Director兩大模組。
Builder負責構建各個模組。
Director負責組建各個模組。