我正在爲使用C++的部門開發視頻播放器。關於C++中Blob反模式的問題
該視頻播放器有三個核心模塊:讀取器(用於讀取數據包),處理器(解碼原始數據),顯示處理(在屏幕上繪製數據)。他們不是緊密耦合的班級,這意味着他們獨立完成他們的工作。
但是,我有一個GUI模塊,連接這三個模塊和客戶端。它將檢索用戶的命令,如暫停,繼續,跳轉到視頻剪輯中的特定位置。這個GUI模塊然後將作業委託給上面提到的三個模塊。 因此,這個GUI模塊增長得相當大,因爲它包含許多客戶端將與之交互的功能。儘管如此,我非常小心,我不讓這個GUI模塊執行任何真正的處理任務(它們是在三個核心模塊上完成的),恐怕這個GUI模塊會變成上帝對象或「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模塊」時,你是否將它分爲至少一個視圖和控制器? – user1118321 2012-03-12 18:33:00
@ user1118321我添加了一些示例代碼。它更像是管理客戶端和處理模塊之間的接口的管理類。 – Scrathis 2012-03-12 18:47:04
對我來說看起來不錯 - 但是我會使用智能指針而不是裸露的閱讀器* – pm100 2012-03-12 18:52:23