Ok, ho questo umano qui, ma cosa può fare , come scopriresti le sue abilità speciali? E quando scoprirai che tipo di esperto hai, come utilizzeresti le sue esclusive responsabilità?
Un esempio per questa domanda di modello architettonico:
Interfaccia di base con caratteristiche comuni a tutti
interface IHuman {
DateTime GetDoB();
}
Interfaccia estesa 1
interface ICivilian : IHuman {
string GetEmail();
void SendEmail();
}
Interfaccia estesa 2
interface IAccountant : IHuman {
double CalculateProfits();
}
Interfaccia estesa n +
interface IAnotherSpecializedHuman : IHuman {
void DoSomethingExpert();
}
Scoperta e utilizzo dell'API specializzati
Come progetteresti
- un sistema altamente collegabile e liberamente accoppiato
- con cui è possibile eseguire tutte le operazioni umane comuni (ad esempio, ottenere l'età),
- ma esegui anche operazioni specializzate disponibili
- a seconda di quali moduli sono incorporati
- es. puoi inviare email, perché il modulo ICivilian è fornito
- ma non puoi calcolare i profitti, perché il plug-in IAccountant non è fornito
- e la domanda è non tanto su fornire diverse implementazioni ma fornire diverse API specializzate (e API che hanno un genitore comune con funzionalità condivise)