簡體   English   中英

域驅動設計問題

[英]Domain Driven Design Question

我有一個需要咨詢的情況。 我有一個應用程序,其中有兩種用戶:學生和教師。 學生和教師共享一些通用屬性,例如名字,姓氏,電子郵件,用戶名,密碼等。因此,我從用戶派生了學生和教師類。

現在的問題是,有時候我真的不知道用戶是學生還是老師。 就像在實現自定義成員資格提供程序時以及在GetUser函數中一樣。 GetUser使用userName,但是現在我丟失了應該返回的內容。

對於學生功能,我為老師創建了IStudent和ITeacher。 但是有時我只想返回一個用戶,而不關心他是學生還是老師。 但是返回基類似乎也不是一個好主意。

更新:

我認為返回用戶並且甚至沒有學生和教師班級是個好主意。 學生和教師只是角色,可以由StudentServices和TeacherServices管理。

一個典型的場景和一個典型的逃避問題的方法。 是的,在繼承受到約束的過程中,總是存在痛苦。 但是,當您將行為注入到班級中時,就會產生好處。 現在看來您已經決定使用User類而不是將User作為基礎類和子類Teacher和Student。 如果您將教師和學生作為角色,但在單獨的服務中進行處理,則可能是個好主意……我認為這很奇怪。 由於這些服務都需要處理用戶邏輯,因此您可能會在這些服務中得到重復的代碼。

事實是,如果您開始通過服務層補償來抵御此類困難,那就是通往貧血症域模型的道路,在該模型中邏輯從域層泄漏到gui或服務層。 教師和學生的獨特之處以及邏輯/行為的不同之處應在域層中表示。

您可以使用繼承(也許是最好的解決方案),也可以使用繼承作為角色,而實際上將角色設為自定義枚舉-看(我認為)Jimmy Bogard,了解如何使用行為擴展自定義枚舉。

暫無
暫無

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

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