Se hai familiarità con il motore Java RDF e OWL Jena , allora hai attraversato la loro filosofia che tutto dovrebbe essere specificato come un'interfaccia quando possibile. Ciò significa che una risorsa , istruzione , RDFNode , proprietà e persino il modello , ecc. sono, contrariamente a quanto si potrebbe pensare, Interfacce invece di classi concrete.
Questo porta all'uso delle fabbriche abbastanza spesso. Poiché non è possibile creare un'istanza di Proprietà o Modello , è necessario che qualcos'altro lo faccia per te - il modello di progettazione di fabbrica .
La mia domanda, quindi, è, qual è il motivo dietro l'utilizzo di questo modello rispetto a un sistema di gerarchia di classe tradizionale? Spesso è perfettamente fattibile utilizzare uno dei due. Ad esempio, se desidero un modello di memoria invece di un modello supportato da database, posso semplicemente istanziare quelle classi, non ho bisogno di chiedere a una fabbrica di darmene uno .
Per inciso, sto scrivendo una libreria per manipolare i dati Pearltrees , che vengono esportati dal loro sito web nel forma di un documento RDF / XML. Mentre scrivo questa libreria, ho molte opzioni per definire le relazioni presenti nei dati di Peartrees. Ciò che è bello dei dati di Pearltrees è che ha un sistema di classi molto logico: un albero è fatto di perle, che possono essere sia perle di pagina, di riferimento, di alias o di radice.
La mia domanda viene dal cercare di capire se dovrei adottare la filosofia Jena nella mia libreria che usa Jena, o se dovrei ignorarla, scegliere la mia filosofia di design e attenerci ad essa.