关于C ++中Blob反模式的问题

时间:2012-03-12 18:27:18

标签: c++ design-patterns blob anti-patterns

我正在使用C ++为我们部门开发视频播放器。

此视频播放器有三个核心模块:Reader(用于读取数据包),Processor(解码原始数据),Display Handle(在屏幕上绘制数据)。它们不是紧密耦合的类,这意味着它们独立地执行它们的工作。

但是,我有一个GUI模块,可以连接这三个模块和客户端。它将从用户检索命令,例如暂停,继续,跳转到视频剪辑中的特定位置。然后,该GUI模块将作业委托给上面提到的三个模块。 因此,此GUI模块变得相当大,因为它包含客户端将与之交互的许多功能。虽然我再次非常小心,我不让这个GUI模块做任何真正的处理任务(它们是在三个核心模块上完成的),恐怕这个GUI模块变成了God Object或者“Blob”这是一个反对 - 面向对象设计中的模式。

这是GUI模块的示例声明:

class CorePlayer
{
public:
   CorePlayer();
   ~CorePlayer();

public:
   void start();
   void pause();
   void continue();
   void jumpToFrame(int frameNum);
   void toggleFullScreen();
   .........
private:
   Reader* rModule_;
   Processor* pModule_;
   DisplayHandle* dspHandle_;
}

........区域还有很多功能。它们是人们对媒体播放器所需的功能。他们不执行实际处理,他们将作业委托给模块。

有人可以帮助澄清我对使用所述设计的这个GUI模块是“Blob”的担忧吗?

1 个答案:

答案 0 :(得分:1)

对我来说这看起来不像是一个blob - 它只是一个功能丰富的GUI控制器,用于播放模块。如果它充满了与播放无关的其他功能,如“设置”,“插件管理”等,它将成为一个blob。