Supponiamo di avere un file XML config come il seguente:
<myapp>
<settings/>
<output>
<mailto>mail service configuration parameters</mailto>
OR
<smsto>sms service configuration parameters</smsto>
<output>
Mentre il nodo delle impostazioni avrà sempre la stessa struttura, il nodo di output potrebbe avere strutture diverse, a seconda che si tratti di una posta o di un output SMS.
Le classi Java saranno:
class MyAppConfig {
String settingXXX;
{what type?} output;
}
Ovviamente avrò un class MailTo {} e un class SmsTo {} .
Poiché l'output può essere un MailTo o un SmsTo oggetto, può essere:
- un tipo di oggetto, poiché
MailToeSmsTonon hanno alcuna superclasse in Comune. - un'interfaccia
Output, che a sua volta è implementata da MailTo e SmsTo. PoichéMailToeSmsTonon hanno nulla in comune, l'interfacciaOutputsarà vuota e "collasserà" su un'interfaccia marker.
Penso che, data questa situazione, questa sia l'unica implementazione possibile.
Il codice cliente verrà convertito in Object o Output in MailTo o SmsTo , che deve essere gestito in modo diverso.
Tuttavia, sono perplesso perché i modelli di progettazione (libro GoF) sembrano non considerare questo tipo di situazioni.
Qual è lo schema del "mondo reale" che applicheresti in questo caso?