[Php-it] Estendere una classe o incorporare un oggetto?
Andrea Colanicchia
andrea.colanicchia at gmail.com
Wed Feb 7 16:04:18 CET 2007
On 2/7/07, Domenico L. <domenico.lorusso at pleiade.it> wrote:
> Immagina che A abbia la proprietà *privata* teta e che V debba potervi
> accedere.
>
> Questo problema non sono riuscito a risolverlo.
Infatti non penso si possa risolvere, a meno che tu non controlli nei
metodi setter e getter di A che chi sta accedendo alla variabile sia
V, vietando l'accesso a tutti gli altri.
Non so di preciso come fare questa cosa, ma penso che si possa fare...
> Altre problematiche li incontro quando necessito di gestire alcuni
> metodi di V che possiedono la logica di utilizzo dei dati di A ma i
> metodi che fanno inferenza su questi dati necessitano di un accesso
> diretto...
Vedi sopra.
> alla fine ho optato per una soluzione che mette insieme MVC, factory e
> decoration.. (anche se non è linearissima, ho dovuto accettare dei
> compromessi:-( )
>
>
> Ho la classe Control (C)che fa pochissime cose ma è di fatto il Factory
>
> Mette a disposizione i metodi per impostare e creare il VariableModel
> (VM), la Form (F) e il builder (B)
>
> F e B hanno il metodo link che permette di impostare le proprietà
> private _parent (riferiemnto a C) e _vm ( riferimento a VM )
>
>
> In questo modo F, che implementa l'interfaccia di acquisizione dati, e
> B, che implementa la metodologia di costruzione dell'output) posso
> accedere direttamnte a VM
B dovrebbe essere il controller?
Secondo me, per rispettare il modello MVC, solo B dovrebbe manipolare
i dati di VM, mentre F dovrebbe solo controllare lo stato di VM, anzi
dovrebbe essere notificato dello stato di VM, come in un "observer".
> VM dal canto suo mette a disposizione molti (troppi) metodi per accedere
> e manipolare i propri dati
VM è il model giusto?
Beh il model deve esporre i propri metodi e proprietà, non è sbagliato.
> Volendo potrei fare in modo che F, C e B condividano con VM l'attributo
> teta di cui sopra, ma per ora cerco di evitarlo :-)
Cioè? Condividere in che senso?
> Prima bastava istanziare una classe ora occorre istanziarne 4.
Il prezzo della flessibilità :)
> Per ovviare mi occorre rendere C il componente (non concreto)
> dell'esempio di cui hai postato il link.
>
> Aggiungendo i metodi più comuni dei 4 oggetti
>
> E' corretto?
Beh, il problema che stai affrontando mi sembra un po' complesso e è
difficile da qui ovviamente capire bene tutto, diciamo che devi
trovare un compromesso tra la teoria dei pattern di cui stiamo
parlando e le esigenze concrete a cui devi rispondere.
Insomma, se fa qualcosa che a te funziona bene ed è abbastanza usabile
e gestibile diciamo che ci sei. :)
Andrea.
More information about the Php-it
mailing list