国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

設計模式之構建(Builder)模式 建造房子實例分析

2019-11-26 16:16:22
字體:
來源:轉載
供稿:網友
構建模式主要用來針對復雜產品生產,分離部件構建細節,以達到良好的伸縮性。
考慮到設計模式來源于建筑學,因此舉一個建造房子的例子。現在一個客戶要建造一棟房子House,
復制代碼 代碼如下:

public class House{
//客戶需求的房子
}

那么他首先需要一個設計師―Designer,但是設計師只能做設計,指示如何去建造房子,可是他并不會親自去做,那么就還需要一個施工隊伍BuildTeam,那么首先,Designer要設計出來如何去建造這棟房子,首先要施工隊打地基,然后施工隊要架骨架、接著上水泥等等(具體如何不得而知,需要請教專業人士),那么從這里我們可以知道設計師對施工隊是有要求的,那就是施工隊必須要會打地基、會架骨架、會上水泥等,因此得出如下招聘施工隊的要求:
復制代碼 代碼如下:

public interface BuildTeam{
public void 打地基();
public void 架骨架();
public void 上水泥();
。。。。。。
}

從上可以看出,要想做這個工程的施工隊伍,必須首先符號上面的條件,會做上面所有的事情。根據設計師的設計,又得知設計師會向施工隊下達一個命令,然后施工隊按照設計師的要求開始施工:
復制代碼 代碼如下:

public class Designer{
public void construct(BuildTeam team){
team.打地基();
team.架骨架();
team.上水泥();
}
}

由于從頭到尾都是設計師在下指令設計,而施工隊進行實際施工,所以客戶最終會找施工隊驗收房子,因此施工隊必須要交付房子給客戶,因此施工隊需要加上一個交付房子的條款,不然房子做成了,但是施工隊卻不交付給我,那不是吃虧了,因此:
復制代碼 代碼如下:

public interface BuildTeam{
public void 打地基();
public void 架骨架();
public void 上水泥();
。。。。。。
public House deliverHouse(); //增加一個交付房子的方法。
}

好了,房子設計好了,如何做也設計好了,如今就差給誰來做了,現在有一個施工隊:
復制代碼 代碼如下:

public class BuildTeamA extends BuildTeam{
public void 打地基(){}
public void 架骨架(){}
public void 上水泥(){}
。。。。。。
public House deliverHouse(){}
}

從施工隊的情況來看, 這個施工隊完全符合設計師對施工隊的要求,既接口BuildTeam,好,那么最終決定由他們來做,從頭到尾全部流程如下:
Designer designer = new Designer(); //找到一個設計師
BuildTeam teamA = new BuildTeamA(); //找到一個施工隊伍BuildTeamA
designer.construct(teamA); //設計師下命令,讓施工隊伍按照他的設計開始建造
House house = teamA.deliverHouse(); //施工隊完成后交付房子
第一棟房子終于建成了,此時同一個客戶覺得這個設計師的設計不錯,于是決定還要使用他的設計并由他指示施工隊再造一棟同樣的房子,可是施工隊BuildTeamA突然獅子大開口,想要更多的錢,客戶為了節省成本,只好再次招聘一個新的施工隊進行施工,剛好有個施工隊伍BuildTeamB符合要求,于是流程如下:
復制代碼 代碼如下:

BuildTeam teamB = new BuildTeamB();
designer.construct(teamB); //由于設計師沒變,且造同樣的房子,所以designer不需要重新找,只需要把他指示的施工隊換成BuildTeamB即可
House house = teamB.deliverHouse(); //施工隊完成后交付房子

好了,第二棟房子也完成了,但是整個流程上并沒有太大的變動,由于使用了構建模式,整個流程分工非常明確,客戶不需要參與任何設計以及建造,設計師只負責設計以及下命令,而施工隊也僅僅只負責具體的實現細節,使得建造明細獨立出來,隨時更換不同的施工隊均可。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新闻| 玛纳斯县| 聊城市| 安达市| 宝兴县| 同江市| 延庆县| 阿合奇县| 乳山市| 万山特区| 慈溪市| 台江县| 青海省| 阿拉善右旗| 肃南| 肇东市| 股票| 贺州市| 嵊泗县| 枣阳市| 聊城市| 碌曲县| 象山县| 盈江县| 汾阳市| 克东县| 万源市| 托克逊县| 疏附县| 乌兰察布市| 天水市| 霍邱县| 保靖县| 台北县| 达日县| 顺昌县| 安泽县| 荔浦县| 图木舒克市| 蓝田县| 九江县|