我有一個關於報告進度的設計問題。想象一下,我有一個充當數據容器的類,比如說一個類「TextFile」,它有一個來自文本文件的行的列表。這個類的構造函數將文件路徑作爲輸入,然後逐行讀入文件。面向對象設計:報告進度的最佳實踐?
現在,爲了監視進度,調用此數據類的構造函數的線程想要獲得有關已讀取多少行以及剩下要讀取的內容的一些反饋,以便它可以顯示狀態在GUI級別的進度條中。有幾種方法可以實現這一點(例如,只要進度已經完成,就將數據類中的事件觸發,將進度條元素的引用傳遞給數據類的構造函數),但是從OOD的角度來看,最佳或推薦的方法是什麼? ? 感謝提前一百萬。
乾杯,
馬丁
嗨馬歇爾,非常感謝您的回覆。我將你的評論傳遞給了我的開發人員,他接着選擇創建另一個接受對進度條的引用的構造函數。就將GUI從數據類中分離出來而言,它看起來並不是很乾淨,但它起作用。 – user1156620
在這種情況下,您應該定義一個接口(例如帶有「Progress」屬性的「IProgressReport」),並創建一個構造函數,將實現此接口的對象作爲參數。 這樣,您的GUI類取決於「報告其進度的東西」,這在概念上更爲正確。順便說一句,這會讓你使用窗口報告除TextFile類以外的其他對象的進度。 – Marshall777