Fornisci parte del contesto alla classe utilizzando l'interfaccia

0

Attualmente ho classe Context che inserisco in alcuni punti del mio codice, come:

protected override object GenerateSomething (object input, Context ctx)

A seconda del contesto, il metodo Generate dà risultati diversi.

Ma sarebbe meglio creare un'interfaccia IGeneratorContext come questa:

public interface IGeneratorContext
{
    ISomething1 GetX ();
    ISomething2 GetY ();
}

E modifica la firma del metodo in questo modo:

protected override object GenerateSomething (object input, IGeneratorContext ctx)

E passerò ancora oggetto Contesto a questo metodo. Naturalmente aggiungo l'interfaccia IGeneratorContext alla classe Context. Così ora passerò lo stesso oggetto, ma come interfaccia con meno metodi esposti.

È una buona idea?

    
posta zgnilec 02.06.2015 - 09:02
fonte

1 risposta

1

Sì, sarebbe una scelta migliore per usare un'interfaccia.

Come hai già indicato tu stesso, utilizzando un'interfaccia hai un controllo migliore su quali metodi sono esposti. Ma un altro aspetto importante dell'utilizzo di un'interfaccia è accoppiamento lento .

Questo perché la classe iniettata non deve più essere figlia di una classe perticolare. Ciò significa che la classe iniettata può ereditare un'altra classe e significa che il tuo codice sarà più facile da estendere in futuro.

    
risposta data 02.06.2015 - 11:33
fonte

Leggi altre domande sui tag