Le classi che definiscono le impostazioni e la configurazione dell'applicazione seguono SOLID?

3

Mi stavo chiedendo se hai un'applicazione in cui definisci una classe che definisce alcune impostazioni configurabili dall'utente (da un file xml o una GUI), dovresti progettarla in modo che segua il SOLID il più possibile come il resto dell'applicazione?

Più in particolare, come modifichi le impostazioni disponibili senza violare Apri principio chiuso?

Perché ho difficoltà a immaginarlo. Riesco a vedere l'aggiunta di impostazioni che è possibile estendere la classe, ma con la rimozione delle impostazioni o la modifica di un'impostazione non ci sarebbe modo di modificare la classe di configurazione in modo che segua SOLID. O è possibile in qualche modo?

Posso anche immaginare l'effetto di ricaduta da quelle modifiche alle impostazioni, che richiedono anche la modifica delle classi che dipendono da esse.

    
posta erotavlas 29.04.2014 - 00:34
fonte

1 risposta

4

Penso che il problema che stai riscontrando non sia con il principio Open / Closed, ma ancor più con il principio di segmentazione dell'interfaccia.

Se si considera la configurazione come una dipendenza delle classi che la usano, si vorrebbe che l'interfaccia di configurazione avesse metodi / proprietà con alta coesione. Pertanto una nuova variabile di configurazione avrebbe un impatto relativamente piccolo sul sistema.

Avere una tale interfaccia ti permette di fare test unitari per diverse configurazioni e permetterti di cambiare il modo in cui quei valori di configurazione sono derivati senza modifiche significative alla tua applicazione (memorizza nel database invece di xml).

public interface IBlogConfiguration
{
    public int GetNumberOfPostsPerPage();
}

public interface ICommentsConfiguration
{
    public bool AreCommentsAllowed();
    public bool CanCommentsBeNested();
}

public class WebConfigConfiguration : IBlogConfiguration, ICommentsConfiguration
{
    // implementation of both those interfaces
}
    
risposta data 29.04.2014 - 02:13
fonte

Leggi altre domande sui tag