簡體   English   中英

設計幫助 - 對象修改並保存另一個對象

[英]Design Help - Object modifies and saves another Object

我在思考設計問題時遇到了一些麻煩,並認為社區可以幫助我指出正確的方向。 我正在為我的公司建立一個員工管理系統,並且遇到了一個令我難過的設計問題。

這是場景:

我有一個Employee類,員工類有一個Office對象列表(員工工作和工作的地方)。 我需要創建在辦公室之間轉移員工的能力。 轉移請求有一些額外的開銷(審批,審核),但最后批准我的轉移對象應該導致更改員工對象辦公室列表。

我正在使用C#,EF4和POCO作為我的對象。 我不知道如何建模轉移對象。 它將持續一段時間,可能幾天內無法完成(批准必須在允許繼續之前完成)。 轉移對象需要知道要修改的員工和員工的新辦公室。 我覺得讓Employee成為Transfer對象的子代並在那里修改它是不好的設計。 我只是想知道是否有人對如何建模這個要求有任何建議。

您可以將轉移視為完全獨立的對象 - EmployeeTransfer。

它至少包含以下數據:1。員工的唯一標識符。 2.從辦公室轉移的唯一標識符。 3.轉移到辦公室的唯一標識符。 4.轉移進度的狀態指示器。

這是一個輕量級對象,不包含任何其他對象 - 它通過唯一標識符引用它們。 處理轉移時,驗證Employee和Transfer To辦公室是否仍然有效,然后更新Employee Offices集合。

此解決方案的唯一先決條件是員工和辦公室必須在創建轉移之前存在。

聽起來像Transfer不是一個對象,它是一個工作流程。 查看Windows Workflow Foundation ...這是一個很好的QuickStart示例。

如果您考慮Transfer對象的責任,那就是管理將員工轉移到另一個Office。 我會設計這個,Transfer對象與Employee和Office分開,但是對每個對象都有引用。 Transfer對象可能具有Enum的批准狀態值,並且在達到最終狀態(取消或最終批准)時,Transfer對象可以執行將Employee與新Office關聯並將其自身標記為已完成的操作。 Transfer對象設計引用其他對象也不錯。 在這種情況下,Transfer和Employee(以及Transfer和Office)之間的關系是“使用”關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM