Introduction
"Design Patterns" is a Addison Wesley book written by "the gang of four" (GoF).
Types of Patterns
Creational Patterns
- Abstract Factory
- Provide an interface for creating families of related or
dependent objects without specifying their concrete classes.
- Builder
- Separate the construction of a complex object from its
representation so that the same construction process can
create diffrent representations.
- Factory Method
- Define an interface for creating an object, but let
subclasses decide which class to instantiate.
Factory Method lets a class defer instantination to sub classes.
- Prototype
- Specify the kinds of objects to create using a prototypical
instance, and create new objects by copying this prototype.
- Singleton
- Ensure a class only has one instance, and provide a
global point of access to it.
Structural Patterns
- Adapter
- Convert the interface of a class into another interface
clients expect. Adapter lets classes work together that
couldn't otherwise because of incompatible interfaces.
- Bridge
- Decouple an abstraction from its implementation
so that the two con vary independently.
- Composite
- Compose objects into tree structures to represent
part-whole hierarchies.
- Decorator
- Attach additional responsibilities to an
object dynamically. Decorators provide a flexible
alternative to subclassing for extending functionality.
- Facade
- 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.
- Flyweight
- Use sharing to support large numbers of fine-grained
objects efficiently.
- Proxy
- Provide a surrogate or place holder for another
object to control access to it.
Behavioral Patterns
- Chain of Responsibility
- 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
the object handles it.
- Command
- Encapsulate a request as an object,
thereby letting you parameterize clients with
diffrent requests queue or log requests
and support undoable operations.
- Interpreter
- Given a language, define a representation
for its grammers along with an interpreter that
uses the representation to interpret sentences
in the language.
- Interator
- Provide a way to access the elements of
an aggregate object sequentially without
exposing its underlying representation.
- Mediator
- Define an object that encapsulates how a
set of objects interact. Meditor promotes
loose coupling by keeping objects from referring
to each other explicitly and lets you vary
their interaction independently.
- Memento
- Without violating encapsulation,
capture and externalize an objects internal state
so that the object can be restored to this state later.
- Observer
- Define a one-to-many dependency between objects
so that when one object changes state, all its
dependents are notified and updated automatically.
- State
- Allow an object to alter its behavior when its
internal state changes. The object will apear to
change it's class.
- Strategy
- Define a family of algorithms, encapsulate each one,
and make them interchangeable. Strategy lets the algorithum
vary independently from clients that use it.
- Template Method
- Define the skelton of an algorithm in an operation,
deferring some steps to subclasses. Template Method
lets subclasses redefine certain steps of an algorithm
without changing the algorithms structure.
- Visitor
- Represent an operation to be performed on the
elements of an object structure. Visitor lets you
define a new operation without charging the classes
of the elements or which it operates.
Patterns must be pretty important, they were discussed by YAG in
the FoxPro Advisor magazine.
March 1998 was the Bridge Pattern.
April 1998 he discussed Observers & Mediators.
May 1998 was the decorator or Wrapper.
June 1998 I went to the bookstore and the Advisor
magazine was shrink wrapped, I bought it but no article from yag.
It did have a nice explanation of FoxPro 6.0 and a Free issue of
Security Advisor but it was disapointing to spend my money and
not to get a article from YAG.
Patterns Web Sites
The Patterns Home page (
http://hilside.net/patterns/patterns.html)
The Portland Patterns Repository (
http://www.c2.com/ppr)
AG Communications Systems Patterns Page (
http://www.agcs.com/patterns/index.html)
Pattern Discussion Groups' Web Page (
http://hilside.net/patterns/Groups.html)