在一個圖表工具中,形狀的x/y位置是域數據的一部分(形狀的位置是圖的一部分 - 如果沒有它,不能繪製圖),使用這些x/y座標並在屏幕上繪製一個形狀是表示層的一部分。
我知道一些人認爲僅用於顯示的數據應該單獨保存,但是在我曾經分別保存的每個項目中分別保存的數據,這成爲一個巨大的維護和支持的噩夢。
在一個簡單的圖表工具中(如果該工具只是繪製和編輯圖表而沒有基於圖表的任何奇特處理)就沒有業務邏輯,只有繪製和編輯圖表的代碼(屬於演示文稿層)和圖數據(即域模型)。
如果沒有業務邏輯,通過使用單獨的一組對象來進行域和表示,您將不得不復制所有模型數據兩次(一次在模型對象中,一次在演示文稿對象中)從業務邏輯與演示分離中獲得任何優勢(因爲沒有)。另一方面,如果你確實有一些算法運行在數據上,你可以通過從圖形代碼中分離圖形數據來獲得某些東西 - 你可以在算法之外運行算法,你可以有更好的自動化測試等
也如果編寫上至少可以共享模型定義和保存/加載代碼,如果你從圖代碼中分離它相同的數據進行操作的另一系統。
所以,讓我們總結一下:
所有圖表數據模型(包括僅用於演示目的,數據)的一部分。
繪製到屏幕或處理用戶輸入的任何內容都在表示層(顯然)中。
如果這兩個覆蓋了您的代碼和數據,而不是您的應用程序,那麼您的應用程序就沒有任何「業務邏輯」,並且層間隔可能過大。
如果您有任何代碼不符合這兩個類別,並且您認爲它應該是模型的一部分,那麼應該構建兩個單獨的層。
如果系統之間有代碼共享的機會,你應該確保共享代碼沒有與表示代碼混合在一起。
還有最後一個「獎勵」要點 - 如果這是一個長期積極開發並且未來增加新功能的項目 - 您可能需要分離UI /數據,以便製作未來的工作更容易 - 你必須決定這個未來的儲蓄是否值得現在的額外時間,以及這種分離是否真的有可能在未來有所幫助。
來源
2010-07-11 14:56:53
Nir
我害怕賞金會在沒有任何我想要的答案的情況下結束。另一個答案很好,我把它提高了,但它並沒有解開我心中的結。您的意見是:繪製形狀的代碼是演示文稿,形狀本身就是域。 此外,隨着詳細程度的提出,答案是非常值得的賞金。非常感謝您的幫助。 – 2010-07-12 18:28:03