GOF結構型模式 裝飾模式

2021-09-29 04:19:31 字數 1204 閱讀 1499

「小豬逃命」遊戲:乙隻小豬和乙隻灰狼,小豬最多5條命,灰狼每咬到小豬一次,小豬就要少一條命,小豬的任務是要逃過灰狼的追咬到豬欄。在逃的過程中小豬可以吃到三種蘋果,吃「紅蘋果」可以給小豬加上保護罩,吃「綠蘋果」可以加快小豬奔跑速度,吃「黃蘋果」可以使豬趟著水跑。小豬如果吃多種蘋果的話,小豬可以擁有多種蘋果提供的功能。

這個例子如果用類的繼承來實現的話那可就麻煩了,你需要為小豬派生321=6個子類(有保護罩的小豬,奔跑速度加快的小豬,會趟水的小豬,既有保護罩又會趟水的小豬,奔跑速度快且會趟水的小豬,有保護罩且奔跑速度快的小豬,有保護罩、奔跑速度快且會趟水的小豬),當小豬吃到不同的蘋果,你就把小豬換成相應的子類例項(好麻煩)。如果有四種蘋果的話那你要為小豬派生432*1=24個子類,如果有五種蘋果…「子類復子類,子類何其多」。

如果使用裝飾模式的那就不用派生諸多子類了,當小豬每吃到乙個蘋果,我們就用裝飾模式給小豬加乙個動態增加乙個新功能即可。

public

class

decrator

}inte***ce

pigclass

littlepig

implements

pig@override

public

void

underattack()

}abstract

class

decorator

implements

pig@override

public

void

run(

)@override

public

void

underattack()

}class

sheltpig

extends

decorator

@override

public

void

run()}

class

runfastpig

extends

decorator

@override

public

void

run()}

class

canwaterpig

extends

decorator

@override

public

void

run(

)}

GoF結構型模式 組合模式

常常有一些元件在內部具有特定的資料結構,如果讓客戶依賴這些特定的資料結構,將極大地破壞元件的復用。這時候,將這些特定的資料結構封裝在內部,在外部提供同一的介面,來實現與特定資料結構無關的訪問,是一 種行之有效的解決方案。將物件組合成樹形結構以表示 部分 整體 的層次結構。composite使得使用者...

裝飾模式(結構型模式)

裝飾模式是一種動態的給類中新增新行為的設計模式,裝飾模式比生成子類更為靈活,可以給某個物件而不是整個類新增一些功能。值得注意的是裝飾模式的裝飾類也繼承介面類,同時他也有介面類的指標指向他需要裝飾的具體類。外表看著像is a的關係,實際也是has a的關係。實際應用中裝飾類可以同時裝飾幾個具體類。可以...

結構型模式 裝飾模式

裝飾模式是對類的組合進行的擴充。比如現在有個門,現在有一些額外功能,比如 新增鎖 貼春聯 門眼 門框全包 等功能,這些功能可以單獨存在,也可以兩兩組合等隨意組合。怎麼實現這樣的 門 呢.繼承 比如有 貼春聯 門眼 就新增乙個新類,這樣如果需要其他的功能就需要無窮多的子類。組合 加強版組合 裝飾模式 ...