2011-05-27 66 views
3

挖掘需要擴展的遺留項目(C++)時,我意識到大約有40個讀寫器/解析器類。它們用於以不同的文件格式(二進制,hdf5,xml,text,...)讀取和寫入各種類型的數據(不同的對象);一種類型的對象通常綁定到一種或兩種文件格式。他們中的大多數人對其他人不瞭解。作者顯然不知道接口和繼承,以及設計模式。如何設計一組不同格式的文件讀寫器

在我看來,這是一個可怕的混亂。另一方面,我不確定如何處理這種情況。我至少會提取接口。我還想看看是否可以在某些父類中使用通用代碼,例如hdf5讀寫器的特定功能。我也認爲抽象工廠模式可能會有所幫助,但我從讀者那裏得到的對象是完全不同的。

你會如何處理這種情況?你將如何設計類?如果有的話,你會使用什麼設計模式?你會不會把閱讀和寫作部分分開?

回答

4

抽象工廠模式不是正確的軌道。如果您預期給定文件類型的多個實現並且都希望以相同的方式運行,那麼通常只需要接口。

問題:一個類可以寫入多種文件類型嗎?如在中,對象'a'(類型A)可能需要寫入XML或文本格式中的任一種/兩種。

如果這是真的,你需要將這些類與讀者/作者分離。看看這個問題:What design pattern should I use for import/export?

+1

感謝您指出我錯過了這個其他問題。這正是我最終實際做的。 – Barth 2011-07-07 11:55:48