Nutile

giovedì, gennaio 26, 2006

Dependency Inversion Principle

Un antipattern molto fastidioso è l'uso improprio del linguaggio di programmazione, e quando questo è un linguaggio OO si traduce spesso in un cattivo impiego dei principi e dei pattern che stanno alla base di tale metodologia.
Analizziamo come esempio un applicazione multilayer: teoricamente ogni livello deve dipendere solo da quelli sottostanti, ma tale dipendenza crea instabilità e limita il riuso. Sicuramente per eliminare tali dipendenze può essere utile usare teniche di "Inversion", invertendo cioè la dipendenza dal basso verso l'alto attraverso l'uso di Interfacce.
Il Dependency Inversion Principle ha come scopo la creazione di dipendenze astratte creando stratificazioni verso l'alto, agevolando la riusabilità e l'estendibilità, rispettando questo principio:

le classi (e i package) devono dipendere da astrazioni (es. interfacce), le astrazioni devono essere indipendenti dai dettagli, e questi devono essere dipendenti dalle astrazioni.

Questo ci permette di invertire la dipendenza: dal basso verso l'alto, verso, cioè, le astrazioni che il livello superiore fornisce. Ovviamente una classe che dipende da una astrazione è maggiormente estensibile e riusabile. Inoltre tale tecnica permette di creare dei framework, e di integrarli tra loro un un'alta modularità.
Una piccola nota: usando tali tecniche, sicuramente è necessario implementare pattern come Abstract Factory o Factory Method che ci permettono di lavorare in modo agevole con le interfacce, l'ereditarità e l'istanziazione degli oggetti.

mercoledì, gennaio 25, 2006

ASP.NET e Value Objects

Un articolo interessante su un approccio che amo molto.
CustEntCls.htm
L'uso dei value objects per la modellazione degli oggetti: niente di nuovo per chi viene dai Java Bean ma è comunque un iniezione di OOP che permette di "svoltare" ;)

Ready