Web Log di Adrian Florea

"You know you've achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away." Antoine de Saint-Exupery
posts - 440, comments - 2715, trackbacks - 3944

My Links

Archives

Post Categories

Image Galleries

.RO Blogs

.RO People

.RO Sites

Blogs

Furls

Links

vinCitori

Factory EndoMethod?

Nell'articolo "The Factory Design Pattern", Amit Goel individua all'interno del Framework .NET delle classi che implementano il pattern Factory Method (GoF, pp. 107-116). Uno dei suoi esempi riguarda le classi del namespace System.Security.Cryptography. Se si analizza con attenzione, per esempio il "ramo" SymmetricAlgorithm-DES-DESCryptoServiceProvider, si trova il pattern in una variante non molto ortodossa.
L'abbiamo chiamata Factory EndoMethod per il fatto che il FactoryMethod della classe Creator restituisce sempre Creator e non Product come nella variante originale del pattern e il FactoryMethod della classe ConcreteCreator restituisce a sua volta ConcreteCreator e non Product (mi sono ispirato al termine endomorfismo che i matematici :-) incontrano nelle primissime ore di corso di Teoria delle categorie - un altro amore mio).
Vediamo adesso l'esempio in causa (SymmetricAlgorithm-DES-DESCryptoServiceProvider):
- la classe astratta System.Security.Cryptography.SymmetricAlgorithm fa da Creator;
- il FactoryMethod sarebbe il metodo Create che però invece di restituire Product restituisce se stessa (è quindi un FactoryEndoMethod);
- la classe System.Security.Cryptography.DES fa da ConcreteCreator, anche se in questa variante non è così concreta bensì astratta come la Creator da cui deriva, e il suo FactoryMethod è di nuovo un FactoryEndoMethod perché restituisce se stessa (DES);
- il fatto del FactoryEndoMethod obbliga la classe Product ad essere identica con la classe ConcreteCreator;
- la classe System.Security.Cryptography.DESCryptoServiceProvider fa in questo esempio da ConcreteProduct.
Se troverò un po' di tempo (boh...) varrebbe la pena di fare in un articolo un po' di teoria in modo più serio su questa variante del pattern Factory Method.
Cosa ne dite?

Print | posted on sabato 17 aprile 2004 20:09 | Filed Under [ Pattern Dappertutto ]

Powered by:
Powered By Subtext Powered By ASP.NET