Factories
copia linkPersonalizzare il comportamento di un prodotto software
Quando un prodotto software viene venduto, nella maggior parte dei casi deve essere personalizzato per adattarlo alle specifiche esigenze del cliente.
Instant Developer contiene già diversi metodi di personalizzazione nel modulo Runtime Configuration (RTC), che consente di personalizzare l'interfaccia utente ed i report, tradurre in diverse lingue e definire i profili utente senza modificare il codice dell'applicazione.
Non era finora previsto uno specifico metodo di personalizzazione del comportamento transazionale del prodotto software. Questo aspetto veniva solitamente affrontato rendendo applicativamente configurabile il sistema in alcune delle sue parti, oppure effettuando una deviazione dalla linea di sviluppo standard (project branch).
Usare l'ereditarietà
Un interessante metodo di personalizzazione del codice di un prodotto potrebbe essere quello di usare l'ereditarietà: si creano classi derivate che estendono i documenti di cui si vuole personalizzare il comportamento e poi si implementano le modifiche allo standard nei metodi virtuali sovrapposti a quelli del documento base.
Purtroppo questa metodologia può essere usata solo se si personalizza anche la parte del sistema che deve usare tali oggetti non standard perché il resto del sistema standard non è a conoscenza dell'estensione. Se, ad esempio, in un metodo del prodotto standard si crea un documento AziendaSPA tramite l'espressione new AziendaSPA, un'eventuale estensione di tale classe (es. MyAziendaSPA) non potrebbe entrare in gioco lì perché il codice preesistente non ne è a conoscenza.
Estensione per sostituzione
Per superare questi limiti, nella versione 7.1 è stato aggiunto un nuovo servizio documentale chiamato Class Factories che, se attivato, consente di personalizzare gli oggetti tramite un metodo chiamato estensione per sostituzione.
Esso si basa su una nuova proprietà statica delle classi documentali, impostabile con il metodo base SetClassName, che permette di specificare a runtime quale classe deve essere usata ogni volta che si deve creare un documento di quel tipo.
Attivando questo servizio, il codice sorgente generato a fronte di una istruzione del tipo new AziendaSPA non usa la parola chiave new di Java o .NET, ma una speciale funzione di creazione che potrebbe anche creare oggetti derivati successivamente da AziendaSPA.
Codice generato per la creazione di un oggetto nel caso di attivazione del servizio Factories
Attivando quindi il servizio Factories su un determinato documento si consente che l'intero sistema possa in realtà utilizzare oggetti diversi da quello in fase di creazione, ancorchè derivati da esso.
Ultima modifica: 25/10/2016 / Validità: da 7.1.3300