我想設計一個子類,它將包含對多部分問題的回答以及對它們進行評估/操作的一些邏輯。例如,FoodSurvey是BaseSurvey的一個子類模擬多部分問題的最佳方法是什麼
BaseSurvey
Name
Date
Submit()
FoodSurvey <- BaseSurvey
DoYouLikeIcecream
IfSoWhatFlavour
WouldYouLikeAFreeSample
SendSample(flavour)
...
FoodSurvey可能有幾十個或更多的問題,我需要valdate基於其他每個答案,以及運行特定FoodSurvey一些其他工藝(如反對CarSurvey)可能取決於多個答案(例如:SendSample(rockyRoad))。
我已經在每個調查中提出了一個Question集合的問題類的概念,但這很快就開始看起來像一個調查'引擎',看起來像1)。是過度殺傷,2)是容易出錯, 3.)限制了我可以用來驗證答案的邏輯。
有沒有關於設計這種類型的公認的最佳實踐?
如果重要,這些類將最終在ASP.NET網站或Web應用程序中使用。
謝謝@eulerfx。這非常接近我已經玩過的東西。我喜歡Question類b/c,我可以添加Prompt,HelpText,ControlType屬性以便稍後對UI構建進行檢測。我堅持的一件事是如何在QuestionAnswer中允許可變的Answer類型(例如:boolean,string,integer等)。當每個問題是一個單獨的屬性時,這不是一個問題。有任何想法嗎? –
有很多方法可以執行「類型」和答案。一種簡單的方法是將QuestionType枚舉與每個問題相關聯,然後驗證者可以確認答案滿足該類型。這將允許答案保持字符串,因爲字符串可以包含任何類型的數據並且可以很容易地綁定。另一種選擇是將驗證正則表達式與每個問題關聯起來。還有一種選擇是將答案類別分類以支持特定的類型。 – eulerfx
我也想過將所有內容都存儲爲字符串,因爲這模擬了填充表單的自然行爲。你能否舉一個例子說明如何使用子類型方法,比如整數回答? –