Mam kilka systemów, można je nazwać A, B, C, D, E, F, G, H, I, J
.Metody interfejsu, abstrakcyjne lub tylko wirtualne?
Wszystkie mają podobne metody i właściwości. Niektóre zawierają dokładnie tę samą metodę i właściwości, niektóre mogą się nieznacznie różnić, a niektóre mogą się bardzo różnić. Obecnie mam wiele zduplikowanych kodów dla każdego systemu. Na przykład mam metodę o nazwie GetPropertyInformation()
, która jest zdefiniowana dla każdego systemu. Próbuję dowiedzieć się, która metoda będzie najlepszym rozwiązaniem w celu zmniejszenia duplikat kodu lub może jeden z poniższych sposobów nie jest sposobem, aby przejść:
Interfejs
public Interface ISystem
{
public void GetPropertyInformation();
//Other methods to implement
}
public class A : ISystem
{
public void GetPropertyInformation()
{
//Code here
}
}
Streszczenie
public abstract class System
{
public virtual void GetPropertyInformation()
{
//Standard Code here
}
}
public class B : System
{
public override void GetPropertyInformation()
{
//B specific code here
}
}
wirtualne metody w klasie Super bazy
public class System
{
public virtual void GetPropertyInformation()
{
//System Code
}
}
public class C : System
{
public override void GetPropertyInformation()
{
//C Code
}
}
Jedno pytanie, chociaż może być głupi, to załóżmy, że poszedłem z abstrakcyjnego podejścia i chciałem zastąpić GetPropertyInformation
, ale musiałem przekazać mu dodatkowy parametr, jest to możliwe, czy musiałbym stworzyć inną metodę w klasie abstrakcyjnej? Na przykład: GetPropertyInformation(x)
Miałem wrażenie, że klasy abstrakcyjne i super-bazowe są podobne. Systemy A, B, C mają silne połączenie. Istnieje standard branżowy, ale nie trzeba go stosować, aby każdy mógł zastosować standard lub zmienić standard ich dopasowania. W pośpiechu wybrałem System :) – Xaisoft
Dobre punkty przy okazji. – Xaisoft