Behavioral pattern: Difference between revisions

Content deleted Content added
m top: General fixes and Typo fixing, replaced: aka → a.k.a. using AWB
Split Publish–subscribe pattern and Observer pattern -- they are distinct
 
(17 intermediate revisions by 12 users not shown)
Line 1:
{{short description|Type of software design pattern}}
In [[software engineering]], '''behavioral design patterns''' are [[design pattern (computer science)|design pattern]]s that identify common communication patterns betweenamong objects and realize these patterns. By doing so, these patterns increase flexibility in carrying out this communication.
 
== Design patterns ==
Examples of this type of design pattern include:
 
;[[Blackboard design pattern]]
* [[Chain of responsibility pattern]]: Command objects are handled or passed on to other objects by logic-containing processing objects
: Provides a computational framework for the design and implementation of systems that integrate large and diverse specialized modules, and implement complex, non-deterministic control strategies
* [[Command pattern]]: Command objects encapsulate an action and its parameters
;[[Chain-of-responsibility pattern]]
* "Externalize the Stack": Turn a recursive function into an iterative one that uses a stack<ref>{{cite web
* [[Chain of responsibility pattern]]: Command objects are handled or passed on to other objects by logic-containing processing objects
| url = http://c2.com/
;[[Command pattern]]
| title = Externalize The Stack
* [[Command pattern]]: Command objects encapsulate an action and its parameters
| date = 2010-01-19
;"Externalize the stack"
| publisher = c2.com
* "Externalize the Stack": Turn a [[Recursion (computer science)|recursive function]] into an [[iterative onefunction]] that uses a [[call stack|stack]]<ref>{{cite web
| archiveurl = http://c2.com/cgi/wiki?ExternalizeTheStack
| url = http://c2.com/
| archivedate = 2010-01-19
| title = Externalize The Stack
| accessdate = 2012-05-21
| date = 2010-01-19
| publisher = c2.com
|archive-url = https://web.archive.org/web/20110303085751/http://c2.com/
|archive-date = 2011-03-03
| accessdateaccess-date = 2012-05-21
|url-status = bot: unknown
}}</ref>
* ;[[Interpreter pattern]]
: Implement a specialized computer language to rapidly solve a specific set of problems
* ;[[Iterator pattern]]
: Iterators[[Iterator]]s are used to access the elements of an aggregate object sequentially without exposing its underlying representation
* ;[[Mediator pattern]]
: Provides a unified interface to a set of interfaces in a subsystem
* ;[[Memento pattern]]
: Provides the ability to restore an object to its previous state (rollback)
* ;[[Null Objectobject pattern]]
: Designed to act as a default value of an object
<dl>
* [[Observer pattern]]: a.k.a. Publish/Subscribe or Event Listener. Objects register to observe an event that may be raised by another object
<dt>[[Observer pattern]]</dt>
** Weak reference pattern: De-couple an observer from an observable<ref>{{cite web
<dd>Defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. The variant '''weak reference pattern''' decouples an observer from an observable to avoid memory leaks in environments without automatic weak references.<ref>{{cite web |last=Nakashian |first=Ashod |date=2004-04-11 |title=Weak Reference Pattern |url=http://c2.com/ |url-status=bot: unknown |archive-url=https://web.archive.org/web/20110303085751/http://c2.com/ |archive-date=2011-03-03 |access-date=2012-05-21 |publisher=c2.com}}</ref></dd></dl>
| first = Ashod
;[[Protocol stack]]
| last = Nakashian
* [[Protocol stack]]: Communications are handled by multiple layers, which form an encapsulation hierarchy<ref>{{cite web
| url = http://c2.com/ | title = Weak Reference Pattern
|url date = 2004-04-11 | publisher = http://c2.com/
| title = Protocol Stack
| archiveurl = http://c2.com/cgi/wiki?WeakReferencePattern
|date archivedate = 20042006-0409-1105
| url publisher = http://c2.com/
| accessdate = 2012-05-21
|archive-url = https://web.archive.org/web/20110303085751/http://c2.com/
|archive-date = 2011-03-03
| accessdateaccess-date = 2012-05-21
|url-status = bot: unknown
}}</ref>
;[[Publish–subscribe pattern]]<dd>A messaging pattern where senders (publishers) and receivers (subscribers) are decoupled via message topics and brokers. Commonly used in distributed systems, this pattern supports asynchronous, many-to-many communication.</dd>
* [[Protocol stack]]: Communications are handled by multiple layers, which form an encapsulation hierarchy<ref>{{cite web
;[[Scheduled-task pattern]]
| url = http://c2.com/
* [[Scheduled-task pattern]]: A task is scheduled to be performed at a particular interval or clock time (used in [[real-time computing]])
| title = Protocol Stack
;[[Single-serving visitor pattern]]
| date = 2006-09-05
* [[Single-serving visitor pattern]]: Optimise the implementation of a visitor that is allocated, used only once, and then deleted
| publisher = c2.com
;[[Specification pattern]]
| archiveurl = http://c2.com/cgi/wiki?ProtocolStack
* [[Specification pattern]]: Recombinable [[business logic]] in a [[boolean algebra|boolean]] fashion
| archivedate = 2006-09-05
;[[State pattern]]
| accessdate = 2012-05-21
* [[State pattern]]: A clean way for an object to partially change its type at runtime
}}</ref>
;[[Strategy pattern]]
* [[Scheduled-task pattern]]: A task is scheduled to be performed at a particular interval or clock time (used in [[real-time computing]])
* [[Strategy pattern]]: Algorithms can be selected on the fly, using composition
* [[Single-serving visitor pattern]]: Optimise the implementation of a visitor that is allocated, used only once, and then deleted
;[[Template method pattern]]
* [[Specification pattern]]: Recombinable business logic in a [[boolean algebra|boolean]] fashion
: Describes the [[program skeleton|skeleton]] of a program; algorithms can be selected on the fly, using [[Inheritance (object-oriented programming)|inheritance]]
* [[State pattern]]: A clean way for an object to partially change its type at runtime
;[[Visitor pattern]]
* [[Strategy pattern]]: Algorithms can be selected on the fly
* [[Visitor pattern]]: A way to separate an algorithm from an object
* [[Template method pattern]]: Describes the [[program skeleton]] of a program
* [[Visitor pattern]]: A way to separate an algorithm from an object
 
==See also==