建造者模式:將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。建造者模式是一種物件建立型模式。
使用環境:當乙個類的構造函式引數個數超過4個,而且這些引數有些是可選的引數,考慮使用構造者模式。
接下來我們以moba類英雄開發的英雄開發為例進行分析,我們知道英雄都有一些基本屬性:攻擊力,防禦力,血量等等,但是同時他們也有一些差別,有些英雄有法力值,而有些英雄沒有;有些英雄有能量值,而有些英雄沒有。我們這時候就可以使用建造者模式來構建英雄類。
class
hero
intgetphylactic()
intgetblood()
intgetblueadsorbed()
intgetenergy()
void
setatk
(int x)
void
setphylactic
(int x)
void
setblood
(int x)
void
setblueadsorbed
(int x)
void
setenergy
(int x)
};
英雄可以分為有法力值,和有能量值2類(因為沒有英雄可以同時擁有法力值和能量值),在英雄構建時,它們的屬性不相同,考慮到擴充套件性,可以定義乙個抽象英雄類,在該抽象類中定義了一系列建立具體英雄屬性的方法。我們只定義2個英雄類,這2個英雄類繼承於這個抽象英雄類。
//抽象英雄類:
class
heropattern
~heropattern()
}}//這裡將設定屬性函式設為virtual型,是為了保證所有的派生類物件的設定屬性函式都會自動設定為virtual型,這保證了任何情況下,不會出現由於設定屬性函式沒有被呼叫而導致的記憶體洩漏。
virtual
void
setatk()
=0;virtual
void
setphylactic()
=0;virtual
void
setblood()
=0;virtual
void
setblueadsorbed()
=0;virtual
void
setenergy()
=0;}
;//有法力值的英雄
class
hero1
:public heropattern
void
setphylactic()
void
setblood()
void
setblueadsorbed()
void
setenergy()
};//有能量值的英雄
class
hero1
:public heropattern
void
setphylactic()
void
setblood()
void
setblueadsorbed()
void
setenergy()
};
c 建造者模式
建造者模式用來構建複雜物件的設計模式,指揮者用來提供構造方法,建造者用來提供材料,物件建立時只是乙個空架子,也可以用set方法來自定義構造。include include using namespace std class foundation class thatchedfoundation pu...
C 設計模式 建造者模式
本文固定連線 using system using system.collections.generic using system.linq using system.text using system.threading.tasks public void show 抽象建造者類,確定產品有兩個部...
C 設計模式 建造者模式
ifndef builder h define builder h include 說明 乙個複雜物件的建立,其通常是由很多的子物件構成 建造者模式就提供了一種 封裝機制 來將各個物件的變化隔離開,最終,組合成複雜物件的過程是不會變的。定義 建造者模式 將乙個複雜的物件的構建與它的表示分離,使得同樣...