3

有时我通过将 POD(普通旧数据)传递给它来初始化我的类。这减少了我必须传递给函数的参数数量(无论是构造函数还是 init 函数),它允许我不关心它们的声明顺序,并且可以更改参数的数量和性质而无需必须更改方法签名。

我觉得很方便。

这是一个小例子:

class Manager
{
public:

  struct Configuration
    : mDataVectorSize( 20 )
    , mShouldOutputDebug( false )
  {
    int mDataVectorSize;
    bool mShouldOutputDebug;
  };

  Manager(const Configuration& aConfiguration);

  void serviceA();
  void serviceB();

private:
  Configuration mConfiguration;
  std::vector<int> mData;

};

随着用法:

Manager::Configuration config;
config.mDataVectorSize = 30;

Manager manager( config );

manager.serviceA();

这种模式的名称是什么,如果它甚至是一种模式?我认为它被称为 Flyweight,但阅读 Wikipedia 上的描述,它与这里的内容不完全匹配。

4

1 回答 1

3

这称为参数对象模式,您可以将一堆方法参数封装到另一个对象/结构中。正如您在问题中已经提到的,优点之一是能够修改实际参数而无需更改方法的签名。你可以在这里阅读更多:http ://www.c2.com/cgi/wiki?ParameterObject

于 2015-03-20T21:36:05.393 回答