Servendo Kinfolk a prova di futuro - Interfacce contrattuali estensibili [chiuse
https://softwareengineering.stackexchange.com/questions/197407
-
06-11-2019 - |
Domanda
Ok, Ho questo essere umano qui, ma cosa può fare, Come scopriresti le sue abilità speciali? E quando scopri che tipo di esperto hai, come faresti effettivamente a utilizzare le sue responsabilità uniche?
Un esempio per questa domanda di schemi architettonici:
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 delle API specializzate
Come progetteresti
- un sistema altamente collegabile e accoppiato
- con cui puoi eseguire tutte le operazioni umane comuni (ad es.
- ma eseguire anche qualsiasi operazione specializzata disponibile,
- a seconda di quali moduli sono incorporati
- ad esempio, è possibile inviare e -mail, perché è fornito il modulo Icivilian
- Ma non è possibile calcolare i profitti, perché il plug-in IACCOUNTANT non è fornito
- E la domanda è Non tanto per fornire diverse implementazioni Ma per fornire diverse API specializzate (e API che hanno un genitore comune con funzionalità condivisa)
Nessuna soluzione corretta
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a softwareengineering.stackexchange