<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4937926307617066440</id><updated>2012-02-16T20:42:19.927-08:00</updated><category term='Command'/><category term='Builder'/><category term='Bridge'/><category term='Decorator'/><category term='To kill a Singleton'/><category term='Factory Method'/><category term='Adapter'/><category term='Composite'/><category term='Proxy'/><category term='Singleton'/><category term='Mediator'/><category term='Iterator'/><category term='Prototype'/><category term='Abstract Factory'/><category term='Interpreter'/><category term='Flyweight'/><category term='Chain of Responsibility'/><category term='Facade'/><title type='text'>Design Patterns</title><subtitle type='html'>All patterns here.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-4384629765979854441</id><published>2007-02-18T05:59:00.000-08:00</published><updated>2008-01-19T00:06:09.874-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mediator'/><title type='text'>Mediator design pattern</title><summary type='text'>Intent


Define an object that encapsulates how a set of objects interact.
Mediator promotes loose coupling by keeping objects from referring
to each other explicitly, and it lets you vary their interaction
independently.
Design an intermediary to decouple many peers.
Promote the many-to-many relationships between interacting peers
to "full object status".



Problem

We want to design reusable </summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/4384629765979854441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=4384629765979854441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/4384629765979854441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/4384629765979854441'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2007/02/mediator-design-pattern.html' title='Mediator design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-2071498554697440686</id><published>2007-02-18T05:56:00.000-08:00</published><updated>2008-01-19T00:06:52.322-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Iterator'/><title type='text'>Iterator design pattern</title><summary type='text'>Intent


Provide a way to access the elements of an aggregate object
sequentially without exposing its underlying representation.
The C++ and Java standard library abstraction that makes it possible
to decouple collection classes and algorithms.
Promote to "full object status" the traversal of a collection.
Polymorphic traversal



Problem

Need to "abstract" the traversal of wildly different </summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/2071498554697440686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=2071498554697440686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/2071498554697440686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/2071498554697440686'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2007/02/iterator-design-pattern.html' title='Iterator design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-7680915980639958705</id><published>2007-02-16T03:32:00.000-08:00</published><updated>2008-01-19T00:07:15.699-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interpreter'/><title type='text'>Interpreter design pattern</title><summary type='text'>Intent


Given a language, define a representation for its grammar along with
an interpreter that uses the representation to interpret sentences in
the language.
Map a domain to a language, the language to a grammar,
and the grammar to a hierarchical object-oriented design.



Problem

A class of problems occurs repeatedly in a well-defined and
well-understood domain.  If the domain were </summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/7680915980639958705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=7680915980639958705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/7680915980639958705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/7680915980639958705'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2007/02/interpreter-design-pattern.html' title='Interpreter design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-2832987094207704774</id><published>2007-02-16T03:09:00.000-08:00</published><updated>2008-01-19T00:10:39.410-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Command'/><title type='text'>Command design pattern</title><summary type='text'>Intent


Encapsulate a request as an object, thereby letting you parameterize
clients with different requests, queue or log requests, and support
undoable operations.
Promote "invocation of a method on an object" to full object status
An object-oriented callback



Problem

Need to issue requests to objects without knowing anything about the
operation being requested or the receiver of the </summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/2832987094207704774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=2832987094207704774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/2832987094207704774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/2832987094207704774'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2007/02/command-design-pattern.html' title='Command design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-6276078287608673627</id><published>2007-02-16T02:41:00.000-08:00</published><updated>2008-01-19T00:11:01.225-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chain of Responsibility'/><title type='text'>Chain of Responsibility design pattern</title><summary type='text'>Intent


Avoid coupling the sender of a request to its receiver by giving more
than one object a chance to handle the request.  Chain the receiving
objects and pass the request along the chain until an object handles
it.
Launch-and-leave requests with a single processing pipeline that
contains many possible handlers.
An object-oriented linked list with recursive traversal.



Problem

There is a </summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/6276078287608673627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=6276078287608673627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/6276078287608673627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/6276078287608673627'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2007/02/chain-of-responsibility.html' title='Chain of Responsibility design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-2715191954246411783</id><published>2007-01-23T10:48:00.000-08:00</published><updated>2008-01-19T00:11:26.928-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxy'/><title type='text'>Proxy design pattern</title><summary type='text'>Intent


Provide a surrogate or placeholder for another object to control
access to it.
Use an extra level of indirection to support distributed,
controlled, or intelligent access.
Add a wrapper and delegation to protect the real component from
undue complexity.



Problem

You need to support resource-hungry objects, and you do not
want to instantiate such objects unless and until they are </summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/2715191954246411783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=2715191954246411783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/2715191954246411783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/2715191954246411783'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2007/01/proxy.html' title='Proxy design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-1558736689796934931</id><published>2007-01-23T10:46:00.000-08:00</published><updated>2007-01-23T11:00:10.501-08:00</updated><title type='text'>Sorry for little delay.</title><summary type='text'>Sorry for little delay in my posting, guys. Here, in Ukraine we are not stopping to celebrate New Year until 20th of January :) Yeah, vodka, bears and so on.</summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/1558736689796934931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=1558736689796934931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/1558736689796934931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/1558736689796934931'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2007/01/sorry-for-little-delay.html' title='Sorry for little delay.'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-310544709922651444</id><published>2007-01-23T10:24:00.000-08:00</published><updated>2008-01-19T00:11:48.446-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flyweight'/><title type='text'>Flyweight design pattern</title><summary type='text'>Intent


Use sharing to support large numbers of fine-grained objects
efficiently.
The Motif GUI strategy of replacing heavy-weight widgets with
light-weight gadgets.



Problem

Designing objects down to the lowest levels of system "granularity"
provides optimal flexibility, but can be unacceptably expensive in
terms of performance and memory usage.

Discussion

The Flyweight pattern describes </summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/310544709922651444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=310544709922651444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/310544709922651444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/310544709922651444'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2007/01/flyweight.html' title='Flyweight design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-5930530751045668637</id><published>2007-01-05T09:30:00.000-08:00</published><updated>2008-01-19T00:12:12.507-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Facade'/><title type='text'>Facade design pattern</title><summary type='text'>Intent


Provide a unified interface to a set of interfaces in a subsystem.
Facade defines a higher-level interface that makes the subsystem easier
to use.
Wrap a complicated subsystem with a simpler interface.


Problem

A segment of the client community needs a simplified interface to the
overall functionality of a complex subsystem.

Discussion

Facade discusses encapsulating a complex </summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/5930530751045668637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=5930530751045668637' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/5930530751045668637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/5930530751045668637'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2007/01/facade.html' title='Facade design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-5833748623855162765</id><published>2006-12-25T15:10:00.000-08:00</published><updated>2008-01-19T00:12:34.811-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Decorator'/><title type='text'>Decorator design pattern</title><summary type='text'>Intent


Attach additional responsibilities to an object dynamically.
Decorators provide a flexible alternative to subclassing for
extending functionality.
Client-specified embellishment of a core object by recursively
wrapping it.
Wrapping a gift, putting it in a box, and wrapping the box.



Problem

You want to add behavior or state to individual objects at run-time.
Inheritance is not </summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/5833748623855162765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=5833748623855162765' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/5833748623855162765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/5833748623855162765'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2006/12/decorator.html' title='Decorator design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-2545493959858498694</id><published>2006-12-23T12:51:00.000-08:00</published><updated>2008-01-19T00:12:57.960-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Composite'/><title type='text'>Composite design pattern</title><summary type='text'>Intent


Compose objects into tree structures to represent whole-part
hierarchies.  Composite lets clients treat individual objects and
compositions of objects uniformly.
Recursive composition
"Directories contain entries, each of which could be a directory."
1-to-many "has a" up the "is a" hierarchy



Problem

Application needs to manipulate a hierarchical collection of "primitive"
and "</summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/2545493959858498694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=2545493959858498694' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/2545493959858498694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/2545493959858498694'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2006/12/composite.html' title='Composite design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-8188044544333402930</id><published>2006-12-20T13:50:00.000-08:00</published><updated>2008-01-19T00:13:27.139-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bridge'/><title type='text'>Bridge design pattern</title><summary type='text'>Intent


Decouple an abstraction from it's implementation so that the two
can vary independently.
Publish interface in an inheritance hierarchy, and bury
implementation in its own inheritance hierarchy.
Beyond encapsulation, to insulation



Problem

"Hardening of the software arteries" has occurred by using subclassing
of an abstract base class to provide alternative implementations.  This
locks</summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/8188044544333402930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=8188044544333402930' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/8188044544333402930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/8188044544333402930'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2006/12/bridge.html' title='Bridge design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-7347922266176045127</id><published>2006-12-14T16:00:00.000-08:00</published><updated>2008-01-19T00:13:54.894-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Adapter'/><title type='text'>Adapter design pattern</title><summary type='text'>Intent


Convert the interface of a class into another interface clients
expect.  Adapter lets classes work together that couldn't otherwise
because of incompatible interfaces.
Wrap an existing class with a new interface.
Impedance match an old component to a new system



Problem

An "off the shelf" component offers compelling functionality that you
would like to reuse, but its "view of the </summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/7347922266176045127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=7347922266176045127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/7347922266176045127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/7347922266176045127'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2006/12/adapter.html' title='Adapter design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-4740178387726445131</id><published>2006-12-03T13:55:00.000-08:00</published><updated>2006-12-05T12:21:00.306-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='To kill a Singleton'/><title type='text'>To Kill a Singleton</title><summary type='text'>C++ Report
"Pattern Hatching" column for June '96 issue
John Vlissides

The Singleton pattern is remarkably simple. Its intent states, Ensure a class only has one instance, and provide a global point of access to it.

It's also flexible, as we saw last time when we applied it to our file system design. It helped us encapsulate the creation of User objects, which give file system users the </summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/4740178387726445131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=4740178387726445131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/4740178387726445131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/4740178387726445131'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2006/12/to-kill-singleton.html' title='To Kill a Singleton'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-1716205485974942849</id><published>2006-12-03T13:49:00.000-08:00</published><updated>2008-01-19T00:14:23.438-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='To kill a Singleton'/><category scheme='http://www.blogger.com/atom/ns#' term='Singleton'/><title type='text'>Singleton design pattern</title><summary type='text'>Intent


Ensure a class has only one instance, and provide a global point of
access to it.
Encapsulated "just-in-time initialization" or "initialization on
first use".



Problem

Application needs one, and only one, instance of an object.  Additionally,
lazy initialization and global access are necessary.


Discussion

Make the class of the single instance object responsible for creation,
</summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/1716205485974942849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=1716205485974942849' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/1716205485974942849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/1716205485974942849'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2006/12/singleton.html' title='Singleton design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-8639093831513090546</id><published>2006-12-02T13:24:00.000-08:00</published><updated>2008-01-19T00:14:50.627-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Prototype'/><title type='text'>Prototype design pattern</title><summary type='text'>Intent


Specify the kinds of objects to create using a prototypical instance,
and create new objects by copying this prototype.
Co-opt one instance of a class for use as a breeder of all future
instances.
The new operator considered harmful.



Problem

Application "hard wires" the class of object to create in each
"new" expression.


Discussion

Declare an abstract base class that specifies a </summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/8639093831513090546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=8639093831513090546' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/8639093831513090546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/8639093831513090546'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2006/12/prototype.html' title='Prototype design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-337321946418538356</id><published>2006-11-30T15:28:00.000-08:00</published><updated>2008-01-19T00:15:21.772-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Factory Method'/><title type='text'>Factory Method design pattern</title><summary type='text'>Intent


Define an interface for creating an object, but let subclasses decide
which class to instantiate.  Factory Method lets a class defer
instantiation to subclasses.
Defining a "virtual" constructor.
The new operator considered harmful.



Problem

A framework needs to standardize the architectural model for a range of
applications, but allow for individual applications to define their own
</summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/337321946418538356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=337321946418538356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/337321946418538356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/337321946418538356'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2006/11/factory-method.html' title='Factory Method design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-7802853404557064517</id><published>2006-11-30T15:25:00.001-08:00</published><updated>2008-01-19T00:15:45.197-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Builder'/><title type='text'>Builder design pattern</title><summary type='text'>Intent


Separate the construction of a complex object from its representation so that the same construction process can create different representations.
Parse a complex representation, create one of several targets.



Problem

An application needs to create the elements of a complex aggregate. The specification for the aggregate exists on secondary storage and one of many representations needs</summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/7802853404557064517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=7802853404557064517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/7802853404557064517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/7802853404557064517'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2006/11/builder.html' title='Builder design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4937926307617066440.post-2173879429099972407</id><published>2006-11-30T14:42:00.000-08:00</published><updated>2008-01-19T00:16:14.386-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Abstract Factory'/><title type='text'>Abstract Factory design pattern</title><summary type='text'>Intent


Provide an interface for creating families of related or dependent objects without specifying their concrete classes.
A hierarchy that encapsulates: many possible "platforms", and the construction of a suite of "products".
The new operator considered harmful.



Problem

If an application is to be portable, it needs to
encapsulate platform dependencies.  These "platforms"
might include: </summary><link rel='replies' type='application/atom+xml' href='http://allpatterns.blogspot.com/feeds/2173879429099972407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4937926307617066440&amp;postID=2173879429099972407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/2173879429099972407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4937926307617066440/posts/default/2173879429099972407'/><link rel='alternate' type='text/html' href='http://allpatterns.blogspot.com/2006/11/abstract-factory-intent-provide.html' title='Abstract Factory design pattern'/><author><name>Al. Shv.</name><uri>http://www.blogger.com/profile/12088581895105074887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.bergsoft.net/forum/uploads/av-387.gif'/></author><thr:total>0</thr:total></entry></feed>
