Aha!設計模式 10 BUILDER 1

2021-09-01 09:21:16 字數 720 閱讀 5908

本來抽象工廠模式還有已知應用和相關模式兩個模組,但是它們對於理解設計模式沒有什麼意義,本系列**會直接省略。

名稱

還是先看名稱。這個設計模式的英文為builder,中文翻譯成了「生成器」,作者認為這個翻譯不太好,如果翻譯成【構建者】,或者【建造者】沒準會更好。【生成器】的說法無法給人構建物件很大,很複雜的感覺。例如大樓,輪船等。還是英文的builder最好。

意圖

將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

因為物件【複雜】所以構建需要乙個過程。這一點實際上也可以說是應用builder模式的必要條件;【表示】一詞可能有些令人費解,英文原文是【representation】,作者認為更準確的翻譯應該是【表現】。乙個飛機設計圖決定生產飛機的步驟,按照這個步驟我們可以製作乙個模型,也可以造一架真正的飛機。這裡的模型和飛機,就是設計圖的兩種表現。結合起來,意圖這句話可以這樣理解:

將乙個複雜物件的構建和表現分離,使得同樣的構建過程可以建立不同的表現。

作者觀點

在物件導向設計和開發過程中名稱的重要性無論怎麼強調都不過分。一旦名稱定了,職責,行為也差不多就定了。

Aha!設計模式 19 BUILDER 10

示例 設計模式 中的示例 因為不完整所以不能編譯,而且還有記憶體洩漏。它真的就是乙個示例。本文根據自己的理解將不足的補上,同時在使用智慧型指標消除記憶體洩漏的同時盡量小地變更原來的 首先是介面 設計模式 書中將實現 也寫在同乙個檔案中,這裡將它們分開 這兩種方式區別不大。接下來是使用builder的...

Java設計模式(五) 建造者模式Builder

我們要建造乙個複雜的產品。比如 神舟飛船 iphone。這個複雜的產品的建立,有這樣乙個問題需要處理 要構建的物件,宇宙飛船 package com.iter.devbox.builder 宇宙飛船 author shearer public class airship public orbital...

Aha!設計模式 58 裝飾模式 2

示例 我們從前一篇文章中選取網路資料處理的例子寫一段python 中首先定義了資料處理基類dataprocessor,它有乙個process操作用於處理資料。datacreater是乙個普通的派生類,用於初始化資料。然後是decorator類,它定義了乙個資料成員processor,用於管理裝飾物件...