No estoy seguro de si hay un patrón que se debe utilizar aquí, pero aquí es la situación:Diseño pregunta patrón para el mantenimiento
Tengo un número de clases concretas que implementan una interfaz:
public interface IPerformAction
{
bool ShouldPerformAction();
void PerformAction();
}
Tengo otra clase que verifica la entrada para determinar si ShouldPerformAction se debe ejecutar. El problema es que los nuevos controles se agregan con bastante frecuencia. La interfaz para la clase de verificación se define como sigue:
public interface IShouldPerformActionChecker
{
bool CheckA(string a);
bool CheckB(string b);
bool CheckC(int c);
// etc...
}
Finalmente tengo actualmente las clases concretas llamar a cada uno de los métodos de corrector con los datos específicos de esa clase concreta:
public class ConcreteClass : IPerformAction
{
public IShouldPerformActionCheck ShouldPerformActionChecker { get; set; }
public string Property1 { get; set; }
public string Property2 { get; set; }
public int Property3 { get; set; }
public bool ShouldPerformAction()
{
return
ShouldPerformActionChecker.CheckA(this.Property1) ||
ShouldPerformActionChecker.CheckB(this.Property2) ||
ShouldPerformActionChecker.CheckC(this.Property3);
}
public void PerformAction()
{
// do something class specific
}
}
Ahora cada vez Agrego un nuevo cheque, tengo que refactorizar las clases concretas para incluir el nuevo cheque. Cada clase concreta pasa diferentes propiedades al método de comprobación, de modo que las subclases de las clases concretas no son una opción. ¿Alguna idea sobre cómo esto podría implementarse de una manera más limpia?
personalmente creo que el método actual es bastante limpio. ¿Cuántas clases concretas estamos hablando? ¿Es realmente tan difícil modificar las clases concretas necesarias a medida que aparecen nuevos controles? Creo que no importa cómo lo elimines, todavía vas a terminar con una clase concreta que tienes que modificar. La única forma de evitar esto es hacer una función de estilo "CheckAll()" en algún lugar que usen las clases concretas. Sin embargo, en general, creo que el mayor rendimiento de no tener que ajustar no va a superar el factor de barro. – mike