Mam klasy abstrakcyjnej z kilkoma klasie pochodnejGet klasę wartości ciągu
public abstract class MyObject
{
public string name { get; set; }
public bool IsObject(string pattern);
...
}
public class MyObjectA : MyObject
{
public string name { get { return "MyObjectA"; } set; }
public bool IsObject(string pattern) { ... }
...
}
public class MyObjectB: MyObject
{
public string name { get { return "MyObjectB"; } set; }
public bool IsObject(string pattern) { ... }
...
}
teraz chcę mieć funkcję, która zwraca moją specyficzną klasę (MyObjectA/MyObectB) w oparciu o ciąg. Problem polega na tym, że mam wiele klauzul if/else na to:
public MyObject Create(string pattern)
{
MyObjectA obj = new MyObjectA();
if(obj.IsObject(pattern)
{
return obj;
}
else
{
MyObjectB objb = new MyObjectB();
if(objb.IsObject(pattern);
return objb;
else
...
}
}
To wygląda po prostu okropnie. Jaki byłby lepszy sposób na zrobienie tego?
+1 Dobre połączenie. Jawne usunięcie 'set' również jest dobre. –
To był tylko przykład. Nazwa-string nie jest dokładną nazwą klasy. Mogę ją jednak przekształcić. – Link