Ciao.
Sto iniziando a scrivere una libreria in c++ per il 3d.
La prima fatica è stata lo scrivere una classe per i poligoni.
Adesso devo creare un sistema per caricare/esportare poligoni sia in formato 3ds che maya.
leggendo qua e la sui pattern(GoF ecc..) mi sono soffermato sulle definizioni in particolare
del pattern abstract factory e factory method che semrano fare al caso mio.
in particolare queste due definizioni mi sembrano azzeccate:
Il pattern Factory Method definisce un’interfaccia di classe per la creazione di un oggetto,
lasciando ai tipi derivati la decisione su quale oggetto debba essere effettivamente istanziato.
Il pattern può rivelarsi utile quando una classe non è in grado di conoscere a priori il tipo di oggetti da creare
piuttosto che quando si vuole delegare la creazione di un oggetto alle sottoclassi.
L’applicazione del pattern consente di eliminare le dipendenze dai tipi concreti utilizzati.
L’Abstract Factory (detto anche Kit) è un pattern creazionale che ha lo scopo di fornire un’interfaccia
per la creazione di famiglie di oggetti tra loro correlati o dipendenti limitando l’accoppiamento
derivante dall’uso diretto delle classi concrete. L’applicazione di questo pattern si rivela assai utile
quando si vuole rendere un sistema indipendente dalle modalità di creazione,
composizione e rappresentazione degli oggetti costituenti, rendendo note unicamente le interfacce e
non le implementazioni concrete. Questo consente di rendere tra loro interscambiabili le diverse
implementazioni che soddisfano una determinata interfaccia, senza che il contesto d’uso dell’istanza debba
essere modificato al variare dell’implementazione scelta.
le ho lette qui:
http://msdn.microsoft.com/it-it/libr...67.aspx#ID0END
leggendo l'abstract factory:
"creazione di famiglie di oggetti tra loro correlati o dipendenti"
non mi sembra il mio caso ,infatti non sono dipendenti i file 3ds da quelli maya
e non mi serve "rendere un sistema indipendente dalle modalità di creazione"
leggendo il factory method:
utile quando una classe non è in grado di conoscere a priori il tipo di oggetti da creare
non mi sebra necessario neppure questo.
quindi avevo pensato di rendere tutto piu semplice creando una classe base astratta con i metodi load e save e
eventuali altre ,CUtil3d ed ereditare due classi da questa , una c3ds e una c3dmaya.
Infine istanziare o l'una o l'altra(e qui inizio a capire il factory method , infatti posso lasciare
all' utente la scelta ,utente che è incapace di conoscere a priori il tipo di classe da istanziare , bo???)
e chiamare i metodi save e load su una variabile di tipo cUtil3d istanziata come c3ds o c3dmaya , e
tramite il polimorfismo lasciare automaticamente al tipo di classe la logica relativa al caricamento/esportazione
non mi sembra pero' ,forse perche non la conosco ,di dovere applicare ad un caso cosi' semplice
uno dei due pattern sopra indicati
Insomma adesso chiedo a voi perchè sto iniziando a capire la oop ma applicarla è un altra storia
grazie