Ciao a tutti.
Vorrei presentare con questo post una serie di articoli riguardante la descrizione dei più diffusi design patterns e di come questi possano essere applicati nel linguaggio Ruby.
Anche nel mondo dell'ingegneria del software si ha la necessità di non dover reinventare la ruota per affrontare la maggior parte dei problemi.
Questi problemi sono solitamente molto comuni e spesso necessitano di una risoluzione simile.
Christopher Alexander sostiene come un pattern descriva un problema ricorrente nel nostro ambiente e fornisca la soluzione a questo problema in modo da poter usare questa soluzione innumerevoli volte successive.
Nel 1995, Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, a partire dai lavori di Christopher Alexander e Kent Beck, hanno pubblicato "Design Patterns: Elements of Reusable Object-Oriented Software".
Con questo libro i quattro autori (da quel momento in poi conosciuti come "GoF": http://it.wikipedia.org/wiki/Design_Patterns, Gang of Four) hanno proposto delle soluzioni comuni ai 23 più diffusi e ricorrenti problemi dell'ingegneria del software.
La GoF suddivide i pattern analizzati in 3 categorie:
Creational patterns
- Abstract Factory
- Builder
- Factory Method
- Prototype
- Singleton
Structural patterns
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
Behavioral patterns
- Chain
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template
- Visitor
Vedremo nel corso di questa serie tutti i più diffusi pattern: analizzeremo il problema e definiremo una soluzione utilizzando se possibile tutte le potenzialità fornite dal linguaggio Ruby.
Tutto il codice che mostreremo sarà liberamente accessibile nel nostro repository su GitHub a quetso indirizzo: "design_patterns_in_ruby"