Use LEFT and RIGHT arrow keys to navigate between flashcards;
Use UP and DOWN arrow keys to flip the card;
H to show hint;
A reads text to speech;
28 Cards in this Set
- Front
- Back
Strategy |
Define a family of algorithms, encapsulate each one, and make them interchangeable.
|
|
Observer
|
Defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically. |
|
Decorator
|
Attach additional responsibilities to an object dynamically. This pattern provides a flexible alternative to subclassing for extending functionality. |
|
Factory Method |
Define an interface for creating an object, but let subclasses decide which class to instantiate. It lets a class defer instantiation to subclasses. |
|
Abstract Factory
|
Provide an interface for creating families of related or dependent objects without specifying their concrete classes. |
|
Singleton
|
Ensure a class has only one instance, and provides a global point of access to it. |
|
Command
|
Encapsulate a request as an object, thereby letting you parameterize other objects with different requests, queue or log requests, and support undoable operations. |
|
Adapter
|
Convert the interface of a class into another interface the clients expect. This pattern lets classes work together that couldn't otherwise because of incompatible interfaces. |
|
Façade
|
Provide a unified interface to a set of interfaces in a subsystem. This pattern defines a higher-level interface that makes the subsystem easier to use. |
|
Template Method
|
Define the skeleton of an algorithm in a method, deferring some steps to subclasses. It lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure. |
|
Iterator
|
Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation. |
|
Composite
|
Allows you to compose objects into tree structures to represent part-whole hierarchies. This pattern lets clients treat individual objects and compositions of objects uniformly. |
|
State
|
Allow an object to alter its behavior when its internal state changes. The object will appear to change its class. |
|
Proxy
|
Provide a surrogate or placeholder for another object to control access to it. |
|
Bridge
|
Decouple an abstraction from its implementation so that the two can vary independently. |
|
Builder
|
Separates the construction of a complex object from its representation so that the same construction process can create different representations. |
|
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. Link the receiving objects and pass the request along the chain until an object handles it. |
|
Flyweight
|
Use sharing to support large numbers of fine-grained objects efficiently. |
|
Interpreter
|
Define a representation of the grammar for a language along with an interpreter that uses the representation to interpret sentences in the language. |
|
Mediator
|
Define an object that encapsulates how a set of objects interact. It 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 object's internal state so that the object can be restored to this state later. |
|
Prototype
|
Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype. |
|
Visitor |
Represent an operation to be performed on the elements of an object structure. This pattern lets you define a new operation without changing the classes of the elements on which it operates. |
|
Creational Patterns |
Focus on how objects are created and often involves isolating the details of object creation in such a way that you don’t have to make major changes to your code when you have to create a new type of object. Includes: Abstract Factory, Builder, Factory Method, Prototype, and Singleton. |
|
Structural Patterns |
Focus on how objects are interconnected, and attempts to ensure that changes in the system don't require changes in those connections. These patterns are often dictated by project constraints. Includes: Adapter, Bridge, Composite, Decorator, Façade, Flyweight, and Proxy. |
|
Behavioral Patterns |
Focus on objects that handle particular types of behavior in an application, and encapsulate processes such as interpreting a language, fulfilling a request, moving through a sequence (as an iterator), or implementing an algorithm. Includes: Chain of responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template method, and Visitor. |
|
Benefit of Design Patterns |
* Can speed up the development process by providing testing, proven development paradigms.
* Effective software design requires considering issues that may not become visible until later in the implementation. Reusing design patterns helps to prevent subtle issues that can cause major problems. * Improves readability of the code for coders and designers who are familiar with the patterns. * Provides patterns for solving problems on a level of abstraction above mere code reuse. Instead of "code reuse" you get "experience reuse." * Provides a common language for designers. |
|
What are they |
General, reusable solution to commonly ocurring problems in software design.
A description or template for how to solve a problem that can be used in many different situations
Ways of organizing code to increase efficiency and provide greater OO Design.
|