我讀過一些關於使用Getters和Setter的文章/文章,以及它們如何幫助打破域模型對象封裝的目的。我理解不使用setter的邏輯 - 您允許客戶端代碼在對象業務規則和不變量的上下文之外操作該對象的屬性。DDD和Getters和Setters的使用
現在這位校長仍然困惑我。例如,如果我需要更改對象的成員變量的值,會發生什麼情況?例如,如果某人的姓名發生變化,我怎麼能在模型中反映出這一點?起初,我想,爲什麼不能有一個名爲'ChangeName'的函數讓我傳入新名稱,然後又可以更改內部'名稱'變量。那麼....這只是一個二傳手是不是!
我需要澄清 - 如果我要完全消除setter,那麼在上述情況下,我應該完全依賴構造函數參數嗎?我是否應該通過構造函數傳遞新的屬性值來代替舊的屬性值,之後我可以通過將對象傳遞給我擁有的任何持久性基礎結構來堅持更改。
這兩篇文章中討論是有益的: