У меня есть группа систем, позвоните по телефону 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
}
}
Виртуальные методы в классе Супер Base
public class System
{
public virtual void GetPropertyInformation()
{
//System Code
}
}
public class C : System
{
public override void GetPropertyInformation()
{
//C Code
}
}
один вопрос, хотя это может быть глупо, это допустим, я пошел с абстрактным подходом, и я хотел, чтобы переопределить GetPropertyInformation
, но мне нужно, чтобы передать ему дополнительный параметр, возможно ли это или я должен создать другой метод в абстрактном классе? Например, GetPropertyInformation(x)
У меня было чувство, что абстрактные и супер базовые классы были похожи. Системы A, B, C имеют сильную связь. Существует отраслевой стандарт, но его не нужно соблюдать, поэтому каждый может либо принять стандарт, либо изменить стандарт на их установку. В спешке я выбрал System :) – Xaisoft
Хорошие точки кстати. – Xaisoft