Immagina di avere un'applicazione, che ha un sistema di plugin.
public class MyPlugin : Plugin
{
public override ExecuteImpl (Context ctx)
{
// do something...
}
}
Ora sto aggiornando la mia applicazione alla versione 2.0 con un migliore sistema di plugin.
Dovrei creare il plugin Plugin2 e scrivere l'adattatore che permette di usare Plugin come Plugin2,
oppure posso fare qualcosa di simile a questo:
public class MyPlugin : Plugin, IApiNewFeatures
{
public override ExecuteImpl (Context ctx)
{
// do something...
}
public void ExecuteNewApiFeatures () { ... }
}
E nella mia app:
if (myPlugin is IApiNewFeatures) { ... }
È una buona architettura? L'aggiunta di nuove interfacce è più semplice, soprattutto quando l'applicazione che utilizza i plug-in appartiene a qualcun altro e non voglio infastidirgli il codice.