1
我不明白如何使用boost::flyweight
作爲GOF模式。有什麼地方存在的例子嗎?如何使用boost :: flyweight作爲GOF模式?
例如,我期望它的用法如下。必須有一些輕量級容器,它們是「胖」對象。這個容器可以爲某些對象提供一些輕量級的「持有者/描述符」。我可以將描述符存儲在某個容器中。
我不明白如何從boost::flyweight
接收對象的「持有者/描述符」。
我不明白如何使用boost::flyweight
作爲GOF模式。有什麼地方存在的例子嗎?如何使用boost :: flyweight作爲GOF模式?
例如,我期望它的用法如下。必須有一些輕量級容器,它們是「胖」對象。這個容器可以爲某些對象提供一些輕量級的「持有者/描述符」。我可以將描述符存儲在某個容器中。
我不明白如何從boost::flyweight
接收對象的「持有者/描述符」。
模式實現不需要將1:1映射到原始模式描述。這是好東西,因爲可以使用GoF正在使用的任何一組功能中不具備的語言功能,以使該實現更具性能,更簡潔,更易維護等等。
The boost::flyweight
is the "lightweight holder/descriptor":
Boost.Flyweight可以很容易地通過提供類模板
flyweight<T>
,它作爲一個下拉更換爲const T
使用常見的編程方法。
我還沒有得到。例如,在文本編輯器的情況下,我需要包含用戶輸入的eath字母的「描述符」列表的容器。那麼如何用boost來實現呢?它必須是flyweigts的列表? (std :: list> line;) –
AeroSun
@AeroSun如果您查看文檔中的示例,如[this one,about formatted text processing](http://www.boost.org/doc /libs/1_63_0/libs/flyweight/example/html.cpp),你會發現它們的確如此:'typedef flyweight character; std :: vector scanned_html;' –
milleniumbug
Thx很多!現在我明白了。它與GoF模式有所不同。 boost實現看起來非常簡單,但我不確定是否可以訪問內部對象存儲庫。 – AeroSun