Как использовать boost::flyweight в качестве шаблона GOF?
Я не могу понять, как использовать boost::flyweight
как шаблон GOF. Есть ли где-нибудь пример?
Например, я ожидаю это использование следующим образом. Должен быть какой-то контейнер с навесом, который состоит из "жирных" объектов. Этот контейнер может дать некоторый легкий "держатель / дескриптор" для некоторого объекта. И я могу хранить дескриптор в каком-то контейнере.
Я не могу понять, как получить "держатель / дескриптор" объекта от boost::flyweight
,
1 ответ
Реализация шаблона не должна отображать 1:1 в исходное описание шаблона. Это хорошо, поскольку можно использовать языковые функции, недоступные в любом наборе функций, которые использовались GoF, чтобы сделать эту реализацию более производительной, менее многословной, более удобной в обслуживании и т. Д. И т. Д.
boost::flyweight
это "легкий держатель / дескриптор":
Boost.Flyweight упрощает использование этой распространенной идиомы программирования, предоставляя шаблон класса
flyweight<T>
, который выступает в качестве замены для заменыconst T
,