2009-10-13 45 views
0

場景:更新命令-architecture問題

你需要更新客戶的2場

你沒有一種方法UpdateCustomer在您的項目尚未在任何地方

如果你創建一個稱爲UpdateCustomer(客戶客戶)的方法,其可以接納完整客戶對象並且僅對所有字段進行全部更新

例如(當然名字只是張貼在這裏)創建UpdateCustomer2Fields(串月,串一年),只是更新那些2場

我能想象的UpdateCustomerThis 一個shitload UpdateCustomerThat

但如果我只是公開一個UpdateCustomer,我可以將它傳遞給一個客戶對象,並讓它更新任何內容並在任何地方使用它。

好,壞?要走哪條路。

回答

1

您應該只更新所有字段,除非有理由不要,以減少您的維護頭痛。

不更新所有字段的原因。這些都是非常具體的環境,只有在你的情況下觀察它們纔有效。

  1. 絕大多數交易是更新,由於通過網絡傳遞了不必要的數據,導致沉重的負擔。
  2. 業務或合法合規性要求您準確記錄用戶每次更改哪些確切數據(這些確實存在)。但是,根據環境,最好在數據庫服務器上記錄這些信息。
  3. 某些用戶不應具有某些字段的更新權限。這是架構特定的,涉及到你如何公開你的函數。如果某人必須擁有某些憑證才能更新特定信息,那麼通常情況下,您不希望每筆交易都更新一切。這可以是動態的,並且可能會導致字段中的字段更新(或其他無數選擇)。我通常會使用具有不同訪問權限的多個消費者使用服務的分層體系結構來解決這個問題。
  4. 我錯過了嗎?

通常,答案只是傳遞整個對象。

0

創建一個名爲UpdateCustomer(客戶客戶)的方法,該方法可以接收完整的客戶對象並僅對所有字段執行全部更新。

保持簡單。現在,您可以將時間花在更大的問題上。

+0

我確實保持簡單。 – FiveTools 2009-10-17 00:24:07