Ho un sacco di sistemi, li chiamiamo A, B, C, D, E, F, G, H, I, J
.Interfaccia, astratto o solo metodi virtuali?
Hanno tutti metodi e proprietà simili. Alcuni contengono lo stesso metodo e le stesse proprietà, alcuni possono variare leggermente e alcuni possono variare molto. Al momento, ho un sacco di codice duplicato per ogni sistema. Ad esempio, ho un metodo chiamato GetPropertyInformation()
definito per ciascun sistema. Sto cercando di capire quale metodo sarebbe il metodo migliore per ridurre il codice duplicato o forse uno dei metodi indicati non è la strada da percorrere:
interfaccia
public Interface ISystem
{
public void GetPropertyInformation();
//Other methods to implement
}
public class A : ISystem
{
public void GetPropertyInformation()
{
//Code here
}
}
astratta
public abstract class System
{
public virtual void GetPropertyInformation()
{
//Standard Code here
}
}
public class B : System
{
public override void GetPropertyInformation()
{
//B specific code here
}
}
metodi virtuali in una classe Super Base
public class System
{
public virtual void GetPropertyInformation()
{
//System Code
}
}
public class C : System
{
public override void GetPropertyInformation()
{
//C Code
}
}
Una domanda, anche se può essere stupido, è supponiamo sono andato con l'approccio astratto e ho voluto ignorare il GetPropertyInformation
, ma avevo bisogno di passare un parametro in più, è possibile questo o avrei dovuto creare un altro metodo nella classe astratta? Ad esempio, GetPropertyInformation(x)
Ho avuto la sensazione che le classi astratte e super base fossero simili. I sistemi A, B, C hanno un forte accoppiamento. Esiste uno standard del settore, ma non deve essere seguito, in modo che ciascuno possa adottare lo standard o modificare lo standard per il fitting. In fretta, ho scelto System :) – Xaisoft
Ottimi punti a proposito. – Xaisoft