<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/rss20.xsl" media="screen"?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<atom:link href="http://programmiamo.blogspirit.com/design_patterns/index.rss" rel="self" type="application/rss+xml" />
<title>Programmiamo - design_patterns</title>
<description>Blog di programmazione di Open Community</description>
<link>http://programmiamo.blogspirit.com/design_patterns/</link>
<lastBuildDate>Wed, 26 Apr 2006 19:50:00 +0200</lastBuildDate>
<generator>blogSpirit.com</generator>
<copyright>All Rights Reserved</copyright>
<item>
<guid isPermaLink="true">http://programmiamo.blogspirit.com/archive/2006/03/23/dao-con-classi-pojo.html</guid>
<title>DAO con classi POJO</title>
<link>http://programmiamo.blogspirit.com/archive/2006/03/23/dao-con-classi-pojo.html</link>
<author>noreply@blogspirit.com (Salvatore D&amp;#039;Angelo)</author>
<category>Design Patterns</category>
<pubDate>Thu, 23 Mar 2006 12:15:00 +0100</pubDate>
<description>
&lt;p&gt;&lt;img style=&quot;border-width: 0pt; margin: 0.7em 0pt;&quot; alt=&quot;&quot; src=&quot;http://programmiamo.blogspirit.com/images/medium_corej2ee.2.jpg&quot; /&gt;&lt;/p&gt; &lt;p&gt;Oggi volevo mostrarvi una mia implementazione del DAO pattern.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Nei post precedenti vi ho fornito alcuni link con la descrizione dei &lt;a href=&quot;http://programmiamo.blogspirit.com/archive/2006/01/17/core-j2ee-patterns.html&quot;&gt;J2EE patterns&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Per aiutarvi a comprendere meglio il pattern DAO, ho pensato che sarebbe stato utile illustrarvi come io l'implemento. Ovviamente non voglio esaurire con questo post tutte le problematiche di persistenza utilizzando l'approccio DAO con classi POJO, ma è una buona base di partenza. In futuro discuteremo estensioni e, magari, anche approcci alternativi.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Come al solito trovate l'articolo nel nostro &lt;a href=&quot;http://programmiamo.pbwiki.com/Persistenza%20con%20DAO&quot;&gt;wiki&lt;/a&gt;.&lt;/p&gt; &lt;br /&gt; &lt;p&gt;&lt;b&gt;Aggiornamento&lt;/b&gt;&lt;br /&gt; Volevo segnalarvi questo tool a pagamento chiamato &lt;a href=&quot;http://www.codefutures.com/products/firestorm/&quot;&gt;Firestorm&lt;/a&gt;. E' un DAO generator che può generare DAO partendo da un database esistente (o definito tramite file xml). Può generare codice per diversi back end: JDBC (molti database), Hibernate, Entity Bean, etc.&lt;/p&gt; &lt;p&gt;Vi consiglio di scaricare la &lt;b&gt;Standard Edition&lt;/b&gt; (se vi interessa JDBC), e provare a fare il reverse engineering di tabelle (max 3 se si usa l'evaluation license) di un database e studiarvi il codice che, secondo me, va sempre adattato alle proprie esigenze.&lt;br /&gt;&lt;/p&gt;
</description>
</item>
<item>
<guid isPermaLink="true">http://programmiamo.blogspirit.com/archive/2006/02/17/ppp.html</guid>
<title>Patterns for Concurrent &amp; Network Object</title>
<link>http://programmiamo.blogspirit.com/archive/2006/02/17/ppp.html</link>
<author>noreply@blogspirit.com (Salvatore D&amp;#039;Angelo)</author>
<category>Design Patterns</category>
<pubDate>Tue, 21 Feb 2006 01:05:00 +0100</pubDate>
<description>
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;img src=&quot;http://programmiamo.blogspirit.com/images/medium_posa2_e.2.gif&quot; alt=&quot;&quot; style=&quot;border-width: 0pt; margin: 0.7em 0pt;&quot; /&gt;&lt;/div&gt; &lt;p&gt;Oggi voglio presentarvi una diversa categoria di Patterns pubblicati nel famoso libro &lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/POSA/&quot;&gt;Pattern-Oriented Software Architecture: Patterns for Concurrent and Network Objects&lt;/a&gt; di &lt;a href=&quot;http://www.ece.uci.edu/%7Eschmidt/&quot;&gt;Douglas C. Shmidt&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;In quel libro vengono discussi classici problemi in ambienti distribuiti e la loro soluzione attraverso specifici patterns.&lt;/p&gt; &lt;p&gt;Questi patterns vengono divise in 4 categorie: &lt;b&gt;cuncurrency&lt;/b&gt;, &lt;b&gt;event&lt;/b&gt;, &lt;b&gt;initialization&lt;/b&gt;, e &lt;b&gt;synchronization&lt;/b&gt; patterns.&lt;/p&gt; &lt;p&gt;Vediamo ora in dettaglio ciascun pattern. In futuro avremo modo di analizzare questi patterns in maggior dettaglio cercando di capire anche eventuali utilizzi in applicazioni pratiche.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Concurrency Patterns&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/C++-report-col7.pdf&quot;&gt;Thread per Session&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;http://www.iona.com/hyplan/vinoski/col6.pdf&quot;&gt;Thread Pool&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/TSS-pattern.pdf&quot;&gt;Thread Specific Storage&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/lf.pdf&quot;&gt;Leader/Followers&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/PLoP-95.pdf&quot;&gt;Half Sync/Half Async&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/Act-Obj.pdf&quot;&gt;Active Object&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/monitor.pdf&quot;&gt;Monitor Object&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Event Patterns&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/reactor-siemens.pdf&quot;&gt;Reactor&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/proactor.pdf&quot;&gt;Proactor&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/ACT.pdf&quot;&gt;AsynchronousCompletion Token&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Initialization Patterns&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/Acc-Con.pdf&quot;&gt;Acceptor/Connector&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/Svc-Conf.pdf&quot;&gt;Service Configurator&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/ObjMan.pdf&quot;&gt;Object Lifetime Manager&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Synchronization Patterns&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/DC-Locking.pdf&quot;&gt;Double Checked Locking&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/locking-patterns.pdf&quot;&gt;Thread Safe Interface&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/locking-patterns.pdf&quot;&gt;Scoped Locking&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/locking-patterns.pdf&quot;&gt;Strategized Locking&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Miscellaneous&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/External-Polymorphism.pdf&quot;&gt;External Polymorphism&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;http://www.cs.wustl.edu/%7Eschmidt/PDF/wrapper-facade.pdf&quot;&gt;Wrapper Facade&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
</description>
</item>
<item>
<guid isPermaLink="true">http://programmiamo.blogspirit.com/archive/2006/01/25/design-patterns-applicati.html</guid>
<title>Design Patterns applicati</title>
<link>http://programmiamo.blogspirit.com/archive/2006/01/25/design-patterns-applicati.html</link>
<author>noreply@blogspirit.com (Salvatore D&amp;#039;Angelo)</author>
<category>Design Patterns</category>
<pubDate>Wed, 25 Jan 2006 21:05:00 +0100</pubDate>
<description>
&lt;p&gt;&lt;img src=&quot;http://programmiamo.blogspirit.com/images/medium_calcio.2.jpg&quot; alt=&quot;&quot; style=&quot;border-width: 0pt; margin: 0.7em 0pt;&quot; /&gt;&lt;br /&gt; In questo &lt;a href=&quot;http://programmiamo.blogspirit.com/archive/2006/01/19/java-3d-soccer.html&quot;&gt;post&lt;/a&gt; vi ho parlato di un tutorial su un videogame 3D dedicato al calcio. Nei precedenti post, però, abbiamo parlato anche di &lt;a href=&quot;http://programmiamo.blogspirit.com/archive/2006/01/13/design-patterns-gof.html&quot;&gt;design patterns GoF&lt;/a&gt;. In questo post volevo mostrarvi un esempio pratico di applicazioni dei patterns ad un ipotetico gioco di calcio. Potreste utilizzare questa guida per migliorare il codice pubblicato nel tutorial creando la vostra versione. Certo ci sarebbe da migliorare anche la grafica ma questo può avvenire gradualmente.&lt;/p&gt; &lt;p&gt;Qui di seguito trovate i links alla guida.&lt;/p&gt; &lt;p&gt;- &lt;a href=&quot;http://www.codeproject.com/useritems/applyingpatterns.asp#Introduction%20To%20This%20Article&quot;&gt;Parte I-II&lt;/a&gt;;&lt;/p&gt; &lt;p&gt;- &lt;a href=&quot;http://www.codeproject.com/useritems/applyingpatterns2.asp&quot;&gt;Parte III-IV&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
</description>
</item>
<item>
<guid isPermaLink="true">http://programmiamo.blogspirit.com/archive/2006/01/17/core-j2ee-patterns.html</guid>
<title>Core J2EE Patterns</title>
<link>http://programmiamo.blogspirit.com/archive/2006/01/17/core-j2ee-patterns.html</link>
<author>noreply@blogspirit.com (Salvatore D&amp;#039;Angelo)</author>
<category>Design Patterns</category>
<pubDate>Wed, 18 Jan 2006 08:00:00 +0100</pubDate>
<description>
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;img style=&quot;border-width: 0pt; margin: 0.7em 0pt;&quot; alt=&quot;&quot; src=&quot;http://programmiamo.blogspirit.com/images/medium_corej2ee.2.jpg&quot; /&gt;&lt;/div&gt; Oggi parliamo di un'altra categoria di patterns: Core J2EE Patterns. Molti dei patterns che presenterò in questo post sono un'estensione dei patterns fondamentali Gof. La figura in questa pagina, mostra la struttura interna di un'ipotetica appliazione J2EE. Essa è composta da un web container e un ejb container. Il secondo viene utilizzato per la gestione della persistenza (ejb entity bean) e business logic (ejb session bean). &lt;p&gt;Un'applicazione J2EE può essere composta anche solo dal web container, con la business logic implementata in semplici classi Java e la persistenza gestita attraverso il pattern DAO.&lt;/p&gt; &lt;p&gt;L'applicazione J2EE è, generalmente, composta da 3 layer: presentation, business e integration.&lt;/p&gt; &lt;p&gt;Per ciascuno dei 3 layers ci sono dei patterns che ci consentono di risolvere numerosi problemi comuni.&lt;/p&gt; &lt;p&gt;Qui riporto un elenco dei Core J2EE Patterns organizzati per layers.&lt;/p&gt; &lt;p&gt;&lt;b&gt;Presentation Layer&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/corej2eepatterns/Patterns/InterceptingFilter.html&quot;&gt;Interception Filter&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/corej2eepatterns/Patterns/FrontController.html&quot;&gt;Front Controller&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/corej2eepatterns/Patterns/ViewHelper.html&quot;&gt;View Helper&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/corej2eepatterns/Patterns/CompositeView.html&quot;&gt;Composite View&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/corej2eepatterns/Patterns/ServiceToWorker.html&quot;&gt;Service to Worker&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/corej2eepatterns/Patterns/DispatcherView.html&quot;&gt;Dispatcher View&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Business Layer&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/corej2eepatterns/Patterns/BusinessDelegate.html&quot;&gt;Business Delegate&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/corej2eepatterns/Patterns/TransferObject.html&quot;&gt;Value Object&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/corej2eepatterns/Patterns/SessionFacade.html&quot;&gt;Session Facade&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/corej2eepatterns/Patterns/CompositeEntity.html&quot;&gt;Composite Entity&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/corej2eepatterns/Patterns/TransferObjectAssembler.html&quot;&gt;Value Object Assembler&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/corej2eepatterns/Patterns/ValueListHandler.html&quot;&gt;Value List Handler&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/corej2eepatterns/Patterns/ServiceLocator.html&quot;&gt;Service Locator&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Integration Layer&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html&quot;&gt;Data Access Object&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/corej2eepatterns/Patterns/ServiceActivator.html&quot;&gt;Service Activator&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://java.sun.com/blueprints/patterns/catalog.html&quot;&gt;Qui&lt;/a&gt; trovate un esempio di applicazione J2EE (PetStore) che utilizza questi patterns.&lt;/p&gt;
</description>
</item>
<item>
<guid isPermaLink="true">http://programmiamo.blogspirit.com/archive/2006/01/13/design-patterns-gof.html</guid>
<title>Design Patterns - GOF</title>
<link>http://programmiamo.blogspirit.com/archive/2006/01/13/design-patterns-gof.html</link>
<author>noreply@blogspirit.com (Salvatore D&amp;#039;Angelo)</author>
<category>Design Patterns</category>
<pubDate>Fri, 13 Jan 2006 12:28:35 +0100</pubDate>
<description>
&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style=&quot;text-align: left;&quot;&gt;&lt;img style=&quot;border-width: 0pt; margin: 0.7em 0pt;&quot; alt=&quot;&quot; src=&quot;http://programmiamo.blogspirit.com/images/medium_designpatterns.2.jpg&quot; /&gt;&lt;/div&gt; &lt;br /&gt; Programmo da molti anni e uno dei problemi tipici dei programmatori, soprattutto quelli inesperti è l'attitudine a reinventare la ruota. &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;In molte applicazioni, i problemi da affrontare sono più o meno gli stessi: persistenza, transazioni, threading, e molto altro.&lt;/p&gt; &lt;p&gt;Quello che i programmatori inesperti spesso fanno è quello di reinventare soluzioni nuove a problemi noti.&lt;br /&gt; Così come in architettura e ingegneria esistono soluzione a problemi noti, lo stesso vale per la programmazione.&lt;/p&gt; &lt;p&gt;Per questa ragione &lt;a href=&quot;http://www.mokabyte.it/1998/10/pattern.htm&quot;&gt;nascono&lt;/a&gt; i &lt;a href=&quot;http://it.wikipedia.org/wiki/Design_patterns&quot;&gt;design patterns&lt;/a&gt;. Essi sono soluzioni noti a problemi noti. Il mio modo di programmare è enormemente cambiato dopo la lettura di questo &lt;a href=&quot;http://www.amazon.com/gp/product/0201633612/002-5150424-1766426?v=glance&amp;amp;n=283155&quot;&gt;libro&lt;/a&gt;, che presenta un set di patterns individuati dalla &lt;a href=&quot;http://it.wikipedia.org/wiki/Design_patterns#La_Gang_of_Four&quot;&gt;Gang of Four&lt;/a&gt; (Gof).&lt;/p&gt; &lt;p&gt;Questi patterns si possono raggruppare in 3 categorie: strutturali, comportamentali e creazionali.&lt;/p&gt; &lt;p&gt;Ecco a voi un'infarinatura dei patterns presentati in questo libro. Vi consiglio di studiarli attentamente se volete diventare veri professionisti del software.&lt;/p&gt; &lt;p&gt;&lt;b&gt;Patterns Creazionali&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.jugtorino.it/vqwiki/jsp/Wiki?AbstractFactory&quot;&gt;Abstract Factory&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.jugtorino.it/vqwiki/jsp/Wiki?Builder&quot;&gt;Builder&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.jugtorino.it/vqwiki/jsp/Wiki?FactoryMethod&quot;&gt;Factory Method&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.jugtorino.it/vqwiki/jsp/Wiki?Prototype&quot;&gt;Prototype&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.jugtorino.it/vqwiki/jsp/Wiki?Singleton&quot;&gt;Singleton&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Patterns Strutturali&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.jugtorino.it/vqwiki/jsp/Wiki?Adapter&quot;&gt;Adapter&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.jugtorino.it/vqwiki/jsp/Wiki?Bridge&quot;&gt;Bridge&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.ugolandini.net/CompositePattern.html&quot;&gt;Composite&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.ugolandini.net/DecoratorPattern.html&quot;&gt;Decorator&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/PatternFacade.html&quot;&gt;Facade&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/PatternFlyweight.html&quot;&gt;Flyweight&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/PatternProxy.html&quot;&gt;Proxy&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.ugolandini.net/IteratorPattern.html&quot;&gt;Iterator&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Patterns Comportamentali&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/PatternChainOfResponsibility.html&quot;&gt;Chain of Responsability&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/PatternCommand.html&quot;&gt;Command&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/PatternInterpreter.html&quot;&gt;Interpreter&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/PatternMediator.html&quot;&gt;Mediator&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/PatternMemento.html&quot;&gt;Memento&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/PatternObserver.html&quot;&gt;Observer&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/PatternState.html&quot;&gt;State&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/PatternStrategy.html&quot;&gt;Strategy&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/PatternTemplateMethod.html&quot;&gt;Template Method&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/PatternVisitor.html&quot;&gt;Visitor&lt;/a&gt;&lt;/p&gt;
</description>
</item>
</channel>
</rss>