2012-12-28 24 views
0

我正在設計一款軟件,它有幾個抽象層次。這可能是我開始設計的最複雜的代碼片段,並且需要輕鬆升級,所以我想在我開始編寫任何代碼之前確保我在正確的軌道上。多級抽象軟件的設計

本質上,將有3個主要級別的類。這兩個班級需要相互交流。

第一個是輸入源數據。目前有兩種主要類型的輸入數據,它們產生類似的輸出,但輸出不相同。這些類的主要目標是從兩個不同的來源獲取數據並將其轉換爲通用接口,供程序的其餘部分使用。

第二組將是外部庫的適配器。圖書館已定期更新,我沒有理由懷疑這些年來不會繼續更新。很可能,每次升級都將與前一次升級保持非常相似,但可能會進行一些小的更改以支持新的圖書館版本。這個級別將負責接收輸入,並將它們格式化爲輸出類的使用。

最後一個等級是輸出。我不認爲爲此需要多個版本,但需要至少指定兩個不同的輸出目錄。我懷疑最簡單的做法是在創建輸出類時直接傳入輸出目錄,這是唯一需要的抽象級別。這個類將經常更新,但不需要支持多個版本。

+0

您是否真的需要類輸入和輸出?記住班級的黃金法則;如果你的類有兩個方法,其中一個是'__init__',它不是一個類,而是一個函數。 –

+0

輸入和輸出實際上是複雜的集合,即它們將輸入和輸出完全不同的格式,不同的文件等。它不僅僅是一個簡單的功能。 – PearsonArtPhoto

+0

請記住http://www.python.org/dev/peps/pep-0020/。特別是「簡單勝過複雜」。 –

回答

0

設置代碼如下,基本上遵循bridge pattern,但具有多個抽象層。

輸入類將是抽象。目前獲得輸出的兩種不同方法將是兩個不同的具體類,如果需要,可以添加更具體的類。

包裝類將是​​。大多數代碼在各種實現中應該是通用的,所以這應該很好地處理微小的差異。

輸出類將作爲實現者類的一部分包括在內。沒有真正需要的模式,因爲這個類只需要一個版本。另外,實現者可能是單身人士。