获取对象参数或使用成员对象更好吗?

nak*_*iya 5 c++ oop

我有一个类,我可以像这样写:

class FileNameLoader
{
     public:
         virtual bool LoadFileNames(PluginLoader&) = 0;
         virtual ~FileNameLoader(){}
};
Run Code Online (Sandbox Code Playgroud)

或这个:

class FileNameLoader
{
     public:
         virtual bool LoadFileNames(PluginLoader&, Logger&) = 0;
         virtual ~FileNameLoader(){}
};
Run Code Online (Sandbox Code Playgroud)

第一个假定Logger&在实现中有一个成员FileNameLoader.第二个没有.但是,我有一些类有很多内部使用的方法Logger.所以第二种方法会让我在这种情况下编写更多代码.Logger目前是一个单身人士.我的猜测是它会保持这种状态.这两者中更"美丽"的是什么?为什么?通常的做法是什么?

编辑:如果这个班级没有被命名Logger怎么办?:).我也有Builder.那怎么样?

Nim*_*Nim 7

我没有看到两个方法有多于一个的额外优势(甚至考虑单元测试!),实际上有两个,你必须确保在你调用特定方法的任何地方,一个Logger可以传入 - 这可能会成为事物复杂...

使用记录器构造对象后,您是否真的看到需要更改它?如果没有,为什么还要接受方法二呢?


Chu*_*dad 5

我更喜欢第二种方法,因为它允许更强大的黑盒测试.它还使函数的接口更清晰(事实上它使用了这样的Logger对象).