У меня есть несколько систем, давайте назовем их A, B, C, D, E, F, G, H, I, J
.
Все они имеют сходные методы и свойства.Некоторые содержат точно такой же метод и свойства, некоторые могут немного отличаться, а некоторые могут сильно различаться.Прямо сейчас у меня много дублированного кода для каждой системы.Например, у меня есть метод с именем GetPropertyInformation()
, который определен для каждой системы.Я пытаюсь выяснить, какой метод был бы лучшим подходом для уменьшения дублирующегося кода или, возможно, один из методов ниже не подходит:
Интерфейс
public Interface ISystem
{
public void GetPropertyInformation();
//Other methods to implement
}
public class A : ISystem
{
public void GetPropertyInformation()
{
//Code here
}
}
Аннотация
public abstract class System
{
public virtual void GetPropertyInformation()
{
//Standard Code here
}
}
public class B : System
{
public override void GetPropertyInformation()
{
//B specific code here
}
}
Виртуальные методы в классе Super Base
public class System
{
public virtual void GetPropertyInformation()
{
//System Code
}
}
public class C : System
{
public override void GetPropertyInformation()
{
//C Code
}
}
Один вопрос, хотя он может быть глупым,давайте предположим, что я пошел с абстрактным подходом и хотел переопределить GetPropertyInformation
, но мне нужно было передать ему дополнительный параметр, это возможно, или мне нужно было бы создать другой метод в абстрактном классе?Например, GetPropertyInformation(x)