C 建造者模式(以英雄屬性為例)

2021-10-13 06:15:25 字數 1652 閱讀 8930

建造者模式:將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。建造者模式是一種物件建立型模式。

使用環境:當乙個類的構造函式引數個數超過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 說明 乙個複雜物件的建立,其通常是由很多的子物件構成 建造者模式就提供了一種 封裝機制 來將各個物件的變化隔離開,最終,組合成複雜物件的過程是不會變的。定義 建造者模式 將乙個複雜的物件的構建與它的表示分離,使得同樣...