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

Questions about Blob anti-pattern in C++

本文关键字:模式 问题 Blob C++ 关于      更新时间:2023-10-16

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

该视频播放器有三个核心模块:读卡器(用于读取数据包)、处理器(解码原始数据)、显示句柄(在屏幕上绘制数据)。它们不是紧密耦合的类,这意味着它们在某种程度上独立地执行它们的工作。

但是,我有一个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"吗?

对我来说,这不像一个blob——它只是一个用于播放模块的功能丰富的GUI控制器。不过,如果它塞满了与播放无关的其他功能,如"设置"、"插件管理"等,它就会变成一个blob。