标签: boost-flyweight

具有Boost和外部数据源的Flyweights

也许有一个简单的方法,我没有看到,所以希望有人可以向我解释.

假设我有一节课:

class A {
public:
  const double parameter;
  const std::string name;
  const std:: string fileName;

  A(const double parameter, const std::string name, const std::string fileName) : 
      parameter(parameter), name(name), fileName(fileName) {}; 
};
Run Code Online (Sandbox Code Playgroud)

那个类的生成器是:

class AReader {
public:
  ifstream dataFile;
  AReader(const std::string filename);
  A* readObject(const std::string objectName);
};
Run Code Online (Sandbox Code Playgroud)

我想boost::flyweight用来处理这些A对象,因为它们可能有数百万个引用,实际上它们包含大量数据.他们将在哈希namefileName在一起.

我需要做什么才能做到这一点?我需要boost::flyweight调用AReader.readObject并散列/存储生成的A类.

是否AReader需要成为一个完整的工厂并用作定制工厂?或者是否可以使用flyweight中的默认工厂并以某种方式用于AReader生成A实例(而不是实现工厂所需的整个存储模式),可能通过使AReader实例成为flyweight中的某个参数?或者是否可以const从外部数据源获取公共变量(即,一旦设置,它们不会更改)而无需诉诸第二类?

编辑

我也对不使用Boost的其他建议持开放态度.我当然可以编写我自己的flyweight实现,或任何其他模式,如果一个更适合.但如果我可以使用已经存在的东西,那将是最好的.无论什么最小化我需要编写的代码量,因为一如既往,截止日期很短.

c++ boost flyweight-pattern boost-flyweight

7
推荐指数
1
解决办法
345
查看次数

boost :: flyweight会引用计数吗?

我一直在阅读文档,boost::flyweight但我没有看到任何提及解除分配或引用计数政策.基本上,flyweight对象应该像不同值的存储库一样,但不清楚当不再使用不同的值时会发生什么.

它已经被支持了吗?是否可以通过一些定制工厂启用?

c++ boost flyweight-pattern boost-flyweight

2
推荐指数
1
解决办法
884
查看次数

标签 统计

boost ×2

boost-flyweight ×2

c++ ×2

flyweight-pattern ×2