Prototype: Specify the kinds of objects to create using a prototypical instance, and create new objects by CLONING this PROTOTYPE.
CCOR
1. Creating an object by specifying a class explicitly.
Proxy: A SUBJECT provides a surrogate or placeholder PROXY for a REAL SUBJECT to control access to it.
CCOR
4. Dependence on object representations or implementations.
*Abstract Factory: An ABSTRACT FACTORY provides an interface for creating families of related or dependent ABSTRACT PRODUCTS without specifying their concrete PRODUCTS.
CCOR
1. Creating an object by specifying a class explicitly.
3. Dependence on hardware and software platform.
4. Dependence on object representations or implementations.
6. Tight coupling.
*Adapter: ADAPTER converts the interface of an ADAPTEE class into another interface of TARGET class clients expect. ADAPTER lets classes work together that couldn't otherwise because of
incompatible interfaces.
CCOR
8. Inability to alter classes conveniently.
Mediator: A MEDIATOR defines a CONCRETE MEDIATOR object that encapsulates how a set of COLLEAGUE objects interact. Mediator promotes loose coupling by keeping objects from referring to each
other explicitly, and it lets you vary their interaction independently.
CCOR
6. Tight coupling.
Memento: Without violating encapsulation, a CARE TAKER captures and externalizes an ORIGINATOR object's internal state into a MEMENTO so that the ORIGINATOR object can be restored to this
state later.
CCOR
4. Dependence on object representations or implementations.
Interpreter: Given a CONTEXT language, an ABSTRACT EXPRESSION defines a represention with a TERMINAL EXPRESSION and a NONTERMINAL EXPRESSION for its grammar along with an interpreter that
uses the representation to interpret sentences in the language.
Iterator: An ITERATOR provides a way to access the elements of an AGGREGATE object sequentially without exposing its underlying representation.
CCOR
5. Algorithmic dependencies.
Bridge: Decouple an ABSTRACTION from its IMPLEMENTOR so that the two can vary independently.
CCOR
3. Dependence on hardware and software platform.
4. Dependence on object representations or implementations.
6. Tight coupling.
7. Extending functionality by subclassing.
Builder: Separates the construction of a complex object in a DIRECTOR from its representation in a CONCRETE BUILDER so that the same construction process in DIRECTOR can create different
representations in CONCRETE BUILDERS.
CCOR
5. Algorithmic dependencies.