2011-09-13 80 views
1

我有一個真實的場景,每個組織有一個擁有者和多個員工。我對如何設計數據庫感到滿意,但我不太喜歡OO設計。這是在這個OO設計方案中專業化的正確方法嗎?

在數據庫術語:

  • 有一個一對多的用戶和組織之間,因爲用戶可以擁有許多單位部門
  • 有許多到許多用戶和組織之間,在Employee表格

據我所知,我可以採用兩種不同的方法來設計類。

  1. 在第一種方法,我想有一個User類和組織類只
  2. 在第二種方法中,我將有員工和所有者類,它們無論是從用戶類繼承,再加上一個組織類以及。

鑑於我的業主和員工都非常專業,我正在走向第二個選擇。我過得怎麼樣?我在正確的軌道上嗎?

我一直在研究域驅動設計的材料(包括埃裏克埃文斯的書),但是我真的可以用一些實際的例子來解決這個問題。任何好的來源?

回答

1

你應該考慮這些問題的答案,以便決定是否選擇解決方案#1或#2:

  • 多少業主和從業人員在領域方面有什麼不同?他們越不同,越好#2。
  • 你能想到對僱主而言沒有意義的操作/方法嗎?(反之亦然)?即使不是現在,未來可能的要求呢?如果是,那麼它可能會更好#2。
  • 你可以想到操作/方法,你需要統一操縱業主和員工?在這種情況下,您可能想要選擇#1,但是當然您也可以在基本抽象類中實現它們或將它們定義在通用接口中。
  • 業主是否可以同時兼職?如果是,那麼#1有一個點。

編輯:怎麼樣區分顧慮?人只是人,作爲所有者或員工,這是你與人交往的角色。所以Role可能只是一個接口(至少有一個person()和一個company()獲得者)或抽象類,OwnerEmployee作爲子類。 A Person類只是跟蹤個人信息和角色(使用通用的Roles roles()獲取方法,或者對於所有者和員工使用兩個專門的方法)。

+0

編輯:我添加了第三點。 –

+0

嗨裏卡多,謝謝。前三點我很舒服。關於第4點,業主也可以是員工。我應該如何處理這個問題?我真的覺得我需要選擇2,因爲員工和業主真的很不一樣...... –

+0

嗯,那麼你可能想考慮我添加到我的文章的替代解決方案。 –

相關問題