說明:CCarModel實現模板方法,Builder負責開始建造產品。建造產品時,構建的順序由Director或main決定。
注意:建造者模式和抽象工廠非常類似。建造者更重視產品建造時的邏輯順序,而抽象工廠更重視生產出不同型號的產品,抽象工廠不關心順序。
12.1.解釋
main(),客戶
CInvoker,命令接收者,如項目經理
IGroup,執行者接口
CRequirementGroup,實際執行者之一
CPageGroup,實際執行者之二
CCodePage,實際執行者之三
ICommand,命令接口
CAddRequirementCommand,Execute函數,將調用CRequirementGroup的多個命令。來組合執行用戶發出的命令。
CDeletePageCommand,同上
... ... 其它命令。
說明:客戶只需要知道向Invoker發出命令(多個命令),而不是將命令直接傳達給具體的執行者。當然,客戶是需要知道都有什麼命令的。
注意:客戶只發命令,不需要知道由誰來執行和怎麼執行,體現出高內聚的特點。用戶在發出命令後,是允許撤回的,所以可以增加一個命令“Undo ”,Undo是狀態的變更