Also .. Ich habe ein Problem mit einem Objekterstellungsmuster.Objekterstellung durch multiple Regex-Werte vorhergesagt
Ich habe mehrere canonicalIds z.
school/1
school/1/class/12/
school/1/class/12/teacher/35
Ich habe verschiedene Objekte, die diese darstellen und aus der ID erstellt werden. was ich auf eine saubere Art tun möchte, Zyklus durch die Regexs 'und bestimmen, welches Objekt es ist.
Ich bin fest entschlossen zu bestimmen, wie ich über die Regex zu einer bestimmten Fabrikmethode gehen sollte.
Ich möchte den Typ, der durch das letzte Wort in der Zeichenfolge bestimmt ist, extrahieren. aber auch die IDs, die dann an einen Dienst delegiert werden, um ein Objekt aus einem Datenspeicher abzurufen. Alles ist an Ort und Stelle außer dem Leim. Ich fühle mich gibt es einen besseren Weg, als eine massive mit if/else-Anweisung
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);
}
}
können Sie etwas genauer sein über das, was Sie extrahieren möchten .. – rock321987
bearbeitet Beitrag mit erweiterten Daten – BastanteCaro
ich mir vorstellen kann hier eine Strategie-Muster anwenden, aber ehrlich gesagt sehe ich keinen Nutzen. Der Code würde sich ausbreiten und die Logik schwerer zu "sehen". Ich schlage vor, Sie erstellen Funktionen wie 'isSchool()', 'isClass()' usw., um die Regex-Logik zu kapseln. Es macht Ihre 'if' Anweisungen lesbarer. – Fuhrmanator