足球戰(zhàn)術(shù)之flyweight篇
時(shí)間:2024-10-20 來源: 作者: 我要糾錯(cuò)
<p style=line-height: 150%>接上回:<p style=line-height: 150%><A >http://www.csdn***/develop/read_article.asp?id=11056</A><p style=line-height: 150%>這個(gè)是球隊(duì)的基本建設(shè),為了組建好一支國家隊(duì),
而國內(nèi)有成千上萬的優(yōu)秀隊(duì)員,而每個(gè)人的特性
都不同,要使他們組建成一支11個(gè)人的優(yōu)秀球隊(duì),
必須按照442的陣形嚴(yán)格區(qū)分每個(gè)隊(duì)員的分工,如
前腰,后腰,左前衛(wèi),右后衛(wèi)等等。這樣可以把
每個(gè)位置作一個(gè)享元,也就是flyweight,防止產(chǎn)生
大量過多的對(duì)象,妨礙球隊(duì)陣形的穩(wěn)固,也開銷大,
難于維護(hù)。
代碼如下:
class 位置{
public:
virtual ~位置();
virtual void 踢球(球隊(duì)*);
protected:
位置();
}<p style=line-height: 150%>class 具體位置:public 位置{
public:
具體位置();<p style=line-height: 150%> virtual void 踢球(球隊(duì)*);
private:
char _球衣號(hào);
};<p style=line-height: 150%>class 位置工廠{
public:
位置工廠();
virtual ~位置工廠();
virtual 具體位置* 創(chuàng)建具體位置(char);
private:
具體位置* _具體位置(最大球衣號(hào));
};<p style=line-height: 150%>位置工廠::位置工廠(){
for(int i=0;i<最大球衣號(hào);++i){
_具體位置[i]=0;
}
}<p style=line-height: 150%>具體位置* 位置工廠::創(chuàng)建具體位置(char 球衣號(hào)){
if (!_具體位置){
_具體位置(球衣號(hào))=new 具體位置(球衣號(hào));
}
標(biāo)簽: