2
所以..我有一個對象創建模式的問題。通過多個正則表達式值來預測異議
我有多個canonicalIds例如。
school/1
school/1/class/12/
school/1/class/12/teacher/35
我有不同的對象代表這些並從id創建。 我想以一種乾淨的方式進行循環,通過正則表達式'並確定它是哪個對象。
我被困在決定如何去匹配正則表達式到特定的工廠方法。
我想提取由字符串中最後一個單詞確定的類型。還包括id,然後將其委派給服務以從數據存儲檢索對象。除了膠水之外,一切都已到位。我覺得有比擁有一個龐大的if/else語句
class Factory()
{
object create(string value)
{
if(match1.ismatch(value))
{
//getting match groups and then using the values to get an object from a data store
var schoolid= mactch.group[1].value;
return new SchoolSerice().GetSchool(schoolid);
}
if(match2.ismatch(value))
{
var schoolid= mactch.group[1].value;
var classid= mactch.group[2].value;
return new SchoolSerice().GetClass(schoolid,classid);
}
}
你可以更具體一點你要提取.. – rock321987
與擴展數據 – BastanteCaro
編輯後我能想象在這裏應用策略模式是什麼,但老實說,我看不出有任何好處。代碼將被分散開來,邏輯更難以「看到」。我建議你創建諸如'isSchool()','isClass()'等函數來封裝正則表達式邏輯。它會讓你的'if'語句更具可讀性。 – Fuhrmanator