官术网_书友最值得收藏!

  • 重學Java設計模式
  • 付政委(小付哥)
  • 795字
  • 2021-05-19 18:10:00

6.5 建造者模式重構代碼

在軟件系統開發中,有時會面臨一個復雜對象的創建工作,其通常由各個部分的子對象用一定過程構建出來,隨著需求的迭代,這個復雜對象的各個部分經常面臨重大的變化,但是將它們組合在一起的過程卻相對穩定,這種場景就適合用建造者模式。

這里會把構建的過程交給創建者類,而創建者通過使用構建工具包構建出不同的裝修套餐。

6.5.1 工程結構

建造者模式代碼類關系如圖6-3所示。

圖6-3

建造者模式代碼工程有三個核心類,這三個核心類是建造者模式的具體實現。與使用if…else判斷方式實現邏輯相比,它額外新增了兩個類,具體功能如下:

·Builder:建造者類具體的各種組裝,都由此類實現。

·DecorationPackageMenu:是IMenu接口的實現類,主要承載建造過程中的填充器,相當于一套承載物料和創建者中間銜接的內容。

也可以從裝修材料參考圖的視角看待這類工程,更便于理解,如圖6-4所示。

圖6-4

接下來分別介紹幾個類的功能的具體實現方式。

6.5.2 定義裝修包接口

接口類定義了填充吊頂、涂料、地板、地磚各種材料的方法,以及最終提供獲取全部明細的方法。

6.5.3 實現裝修包接口

在裝修包的實現中,每一種方法都返回了this對象本身,可以非常方便地用于連續填充各種物料。同時,在填充時也會根據物料計算相應面積的報價,吊頂和涂料按照面積乘以單價計算。最后,同樣提供了統一的獲取裝修清單的明細方法。

6.5.4 建造者類創建

最后,在建造者的使用中就已經非常容易了。統一的建造方式通過不同物料填充出不同的裝修風格:豪華歐式、輕奢田園和現代簡約。如果公司擴展業務,也可以將這部分內容配置到數據庫中自動生成,但整體過程仍然可以使用建造者模式的思想進行搭建。

6.5.5 測試驗證

1.單元測試

在單元測試中,使用建造者模式分別創建出三種裝修套餐的價格,獲取詳情信息并進行輸出。

·levelOne、levelTwo、levelThree 對應三種裝修風格:豪華歐式、輕奢田園和現代簡約。

·入參的信息是房屋面積,最終獲取裝修報價單。實際的業務場景會更復雜,這里的案例主要展示最核心的邏輯。

2.測試結果

主站蜘蛛池模板: 黄龙县| 高碑店市| 大英县| 木里| 城口县| 博野县| 太湖县| 西林县| 雷波县| 桐城市| 营口市| 伊川县| 神木县| 离岛区| 彰化市| 岗巴县| 加查县| 昭觉县| 独山县| 土默特左旗| 新沂市| 综艺| 惠来县| 惠来县| 子长县| 昌邑市| 依兰县| 六盘水市| 武川县| 高青县| 田阳县| 保山市| 松江区| 长寿区| 阿鲁科尔沁旗| 宁武县| 马关县| 扎鲁特旗| 堆龙德庆县| 子洲县| 延长县|