在我的項目的業務邏輯,我大多有「值對象」和「經理人」面向對象設計 - 我的值對象是否只包含getter?
值對象到處都是。他們可以是用戶,汽車,照片,相冊等。
管理者存在以控制它們的值對象。它可以是UserManager,CarManager,PhotoManager,AlbumManager等等。他們使用值對象創建/刪除/ getList和其他操作。
現在我面臨的問題:我的價值對象應包含設置器? 我的第一個意見是沒有,因爲我認爲更好的價值對象狀態將只能由他的經理控制。
但有一個糟糕的副代碼重複和明顯的雙重工作。
沒有制定者,我的經理將不得不方法,如userManager.addPhoto(userToAddTo, photoToBeAdded)
,在內部調用user.addPhoto(photo)
(在實現方法addPhoto
存在,但不是在接口)。沒關係,如果只有幾種這樣的方法,但是當它得到很多這樣的「二傳手」方法時,經理似乎有點難看,這顯然是雙重工作。
那麼,我應該在我的價值對象中使用setter嗎?
使用擴展和工廠模式存儲等有什麼錯誤?所以你有一個通用的經理類,然後根據需要擴展它 – Dave