設計模式 共享模式

2021-08-03 18:32:15 字數 1619 閱讀 4350

看了果凍兄的部落格,發現大家對裡面的乙個實現有一些不同的見解,貼出來記錄一下,其博文如下

共享模式的主要想法就是:運用共享技術有效地支援大量細粒度的物件。所以應該將物件的外部特徵由更高一級的物件來管理。在原文中,博主將棋子的外部特徵(座標)作為了棋子的乙個屬性來管理,又在棋盤類中採用覆蓋的方法來每一次新增共享模式棋子時,重新整理其座標,再記錄之。感覺重新整理的這一步有點多餘,所以我去掉了棋子的座標屬性,直接在記錄時新增了座標資訊。不過這樣做的缺點就是,座標屬性在類的實現中體現的不夠明顯,是否有違設計的原則呢?後面再查查資料,或者如有大神看到,還望解答。

**分別如下:

果凍兄**:

#include #include #include using namespace std;

typedef struct pointtag

pointtag(int a, int b)

bool operator <(const pointtag& other) const

else if (x == other.x)

return false;

}}point;

typedef enum piececolortag

piececolor;

class cpiece

piececolor getcolor()

// set the external state

void setpoint(point point)

point getpoint()

protected:

// internal state

piececolor m_color;

// external state

point m_point;

};class cgomoku : public cpiece

};class cpiecefactory

else

}if (ppiece == null)

} return ppiece;

}

~cpiecefactory()

} }

private:

vectorm_vecpiece;

};class cchessboard

if (ppiecefactory != null)

}

我改了後的:

...

class cpiece

piececolor getcolor()

protected:

// internal state

piececolor m_color;

};class cgomoku : public cpiece

};class cpiecefactory

else

}if (ppiece == null)

} return ppiece;

}

~cpiecefactory()

} }

private:

vectorm_vecpiece;

};class cchessboard

設計模式 共享模式

一 共享模式 共享模式 運用共享技術有效的支援大量細粒度的物件 flyweigth類,具有所有享元類的超類或介面 abstract class flyweigth concreteflyweigth是繼承flyweigth超累或實現介面,並為內部狀態增加儲存空間 class concreteflyw...

Python設計模式 三 共享模式

共享模式 class borg 共享狀態 shared state def init self self.dict self.shared state self.state 初始化 當你列印乙個類的時候,那麼print首先呼叫的就是類裡面的定義的 str 當列印borg的乙個例項的時候,str 函式...

共享模式 專有模式

概念 適用場景 通用引數 local listener pmon只會動態註冊port等於1521的監聽,否則pmon不能動態註冊listener,要想讓pmon動態註冊listener,需要設定local listener引數。listener networks 配置多個remote listene...