c 設計模式 Builder

2022-08-20 22:06:15 字數 1537 閱讀 5863

動機

在軟體系統中,有時候面臨著「乙個複雜物件」的建立工作,其通常由各個部分的子物件用一定的演算法構成;由於需求的變化,這個複雜物件的各個部分經常面臨著劇烈的變化,但是將它們組合在一起的演算法卻相對穩定。

如何應對這種變化?如何提供一種「封裝機制」來隔離出「複雜物件的各個部分」的變化,從而保持系統中的「穩定構建演算法」不隨著需求改變而改變?

定義

將乙個複雜物件的構建與其表示相分離,使得同樣的構建過程(穩定)可以建立不同的表示(變化)。

——《設計模式》gof

結構

示例

class house;

//builder

class housebuilder

virtual ~housebuilder(){}

protected:

house* phouse;

virtual void buildpart1()=0;

virtual void buildpart2()=0;

virtual void buildpart3()=0;

virtual void buildpart4()=0;

virtual void buildpart5()=0; };

class stonehouse: public house;

//concretebuilder

class stonehousebuilder: public housebuilder

virtual void buildpart2()

virtual void buildpart3()

virtual void buildpart4()

virtual void buildpart5()

};//director

class housedirector

house* construct()

bool flag=phousebuilder->buildpart3();

if(flag)

phousebuilder->buildpart5();

return phousebuilder->getresult();}};

總結1.乙個複雜物件是由多個部件組成的,建造者模式是把複雜物件的建立和部件的建立分別開來,分別用builder類和director類來表示。用director構建最後的複雜物件,而在上面builder介面中封裝的是建立部件的方法(複雜物件是由這些部件組成的),也就是說,director負責如何將部件最後組裝成產品。這樣建造者模式就讓設計和實現解耦了。

2.變化點在**,封裝**—— builder模式主要在於應對「複雜對

象各個部分」的頻繁需求變動。其缺點在於難以應對「分步驟構建

演算法」的需求變動。

C 模式設計之Builder

c 模式設計之builder 2002 07 30 com集中營 一 功能 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。二 結構圖 各類之間的互動關係如下圖所示 三 示例 namespace designpattern builder class product2 cl...

Builder設計模式

builder設計模式一般會採用鏈式程式設計結構 案例分析?構建一台電腦 記憶體 cpu 顯示卡等等 記憶體 r am 執行記憶體 和 rom 非執行記憶體 分為了一些角色 builder 抽象類 規範產品組裝 案例中builder介面 concratebuilder 具體組裝產品類 案例macbo...

Builder設計模式

當乙個類需要過載多個構造方法時,並且引數隨機使用時,builder模式就出現了。官方說法 將乙個複雜的物件的構建與他的表示相分離,使用者可以一步一步構建乙個比較複雜的物件。自己理解 先通過某種方式取得構造物件所需要的所有引數,再通過這些引數一次性構建這個物件。實現如下 package com.dem...