足球戰術之flyweight篇
時間:2024-10-20 來源: 作者: 我要糾錯
<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%>這個是球隊的基本建設,為了組建好一支國家隊,
而國內有成千上萬的優秀隊員,而每個人的特性
都不同,要使他們組建成一支11個人的優秀球隊,
必須按照442的陣形嚴格區分每個隊員的分工,如
前腰,后腰,左前衛,右后衛等等。這樣可以把
每個位置作一個享元,也就是flyweight,防止產生
大量過多的對象,妨礙球隊陣形的穩固,也開銷大,
難于維護。
代碼如下:
class 位置{
public:
virtual ~位置();
virtual void 踢球(球隊*);
protected:
位置();
}<p style=line-height: 150%>class 具體位置:public 位置{
public:
具體位置();<p style=line-height: 150%> virtual void 踢球(球隊*);
private:
char _球衣號;
};<p style=line-height: 150%>class 位置工廠{
public:
位置工廠();
virtual ~位置工廠();
virtual 具體位置* 創建具體位置(char);
private:
具體位置* _具體位置(最大球衣號);
};<p style=line-height: 150%>位置工廠::位置工廠(){
for(int i=0;i<最大球衣號;++i){
_具體位置[i]=0;
}
}<p style=line-height: 150%>具體位置* 位置工廠::創建具體位置(char 球衣號){
if (!_具體位置){
_具體位置(球衣號)=new 具體位置(球衣號);
}
標簽: