Behavioral pattern: Difference between revisions
Jump to navigation
Jump to search
imported>7804j Split Publish–subscribe pattern and Observer pattern -- they are distinct |
imported>Stevebroshar No need for disambiguation clause at the start and 'software engineering' is hardly accurate anyway; and less bullets |
||
| Line 1: | Line 1: | ||
{{short description|Type of software design pattern}} | {{short description|Type of software design pattern}} | ||
A '''behavioral pattern''' is a [[software design pattern]] for collaboration between [[object (computer science)|objects]]. | |||
== | == Examples == | ||
Examples | Examples include: | ||
;[[Blackboard design pattern]] | ; [[Blackboard design pattern]]: 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. | ||
: 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 | ; [[Chain-of-responsibility pattern]]: Command objects are handled or passed on to other objects by logic-containing processing objects. | ||
;[[Chain-of-responsibility pattern]] | ; [[Command pattern]]: Command objects encapsulate an action and its parameters. | ||
: Command objects are handled or passed on to other objects by logic-containing processing objects | ; Externalize the stack: Turn a [[Recursion (computer science)|recursive function]] into an [[iterative function]] that uses a [[call stack|stack]]<ref>{{cite web | ||
;[[Command pattern]] | |||
: Command objects encapsulate an action and its parameters | |||
; | |||
: Turn a [[Recursion (computer science)|recursive function]] into an [[iterative function]] that uses a [[call stack|stack]]<ref>{{cite web | |||
|url = http://c2.com/ | |url = http://c2.com/ | ||
|title = Externalize The Stack | |title = Externalize The Stack | ||
| Line 22: | Line 18: | ||
|url-status = bot: unknown | |url-status = bot: unknown | ||
}}</ref> | }}</ref> | ||
;[[Interpreter pattern]] | ; [[Interpreter pattern]]: Implement a specialized computer language to rapidly solve a specific set of problems. | ||
: Implement a specialized computer language to rapidly solve a specific set of problems | ; [[Iterator pattern]]: [[Iterator]]s are used to access the elements of an aggregate object sequentially without exposing its underlying representation. | ||
;[[Iterator pattern]] | ; [[Mediator pattern]]: Provides a unified interface to a set of interfaces in a subsystem. | ||
: [[Iterator]]s are used to access the elements of an aggregate object sequentially without exposing its underlying representation | ; [[Memento pattern]]: Provides the ability to restore an object to its previous state (rollback). | ||
;[[Mediator pattern]] | ; [[Null object pattern]]: Acts as a default value of an object. | ||
: Provides a unified interface to a set of interfaces in a subsystem | ; [[Observer pattern]]: 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> | ||
;[[Memento pattern]] | ; [[Protocol stack]]: Communications are handled by multiple layers, which form an encapsulation hierarchy<ref>{{cite web | ||
: Provides the ability to restore an object to its previous state (rollback) | |||
;[[Null object pattern]] | |||
: | |||
;[[Protocol stack]] | |||
: Communications are handled by multiple layers, which form an encapsulation hierarchy<ref>{{cite web | |||
|url = http://c2.com/ | |url = http://c2.com/ | ||
|title = Protocol Stack | |title = Protocol Stack | ||
| Line 46: | Line 34: | ||
|url-status = bot: unknown | |url-status = bot: unknown | ||
}}</ref> | }}</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> | ; [[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> | ||
;[[Scheduled-task pattern]] | ; [[Scheduled-task pattern]]: A task is scheduled to be performed at a particular interval or clock time (used in [[real-time computing]]). | ||
: A task is scheduled to be performed at a particular interval or clock time (used in [[real-time computing]]) | ; [[Single-serving visitor pattern]]: Optimise the implementation of a visitor that is allocated, used only once, and then deleted. | ||
;[[Single-serving visitor pattern]] | ; [[Specification pattern]]: Recombinable [[business logic]] in a [[boolean algebra|boolean]] fashion. | ||
: Optimise the implementation of a visitor that is allocated, used only once, and then deleted | ; [[State pattern]]: A clean way for an object to partially change its type at runtime. | ||
;[[Specification pattern]] | ; [[Strategy pattern]]: Algorithms can be selected on the fly, using composition. | ||
: Recombinable [[business logic]] in a [[boolean algebra|boolean]] fashion | ; [[Template method pattern]]: Describes the [[program skeleton|skeleton]] of a program; algorithms can be selected on the fly, using [[Inheritance (object-oriented programming)|inheritance]]. | ||
;[[State pattern]] | ; [[Visitor pattern]]: A way to separate an algorithm from an object. | ||
: A clean way for an object to partially change its type at runtime | |||
;[[Strategy pattern]] | |||
: Algorithms can be selected on the fly, using composition | |||
;[[Template method pattern]] | |||
: Describes the [[program skeleton|skeleton]] of a program; algorithms can be selected on the fly, using [[Inheritance (object-oriented programming)|inheritance]] | |||
;[[Visitor pattern]] | |||
: A way to separate an algorithm from an object | |||
==See also== | ==See also== | ||
Latest revision as of 15:48, 15 December 2025
Template:Short description A behavioral pattern is a software design pattern for collaboration between objects.
Examples
Examples include:
- Blackboard design pattern
- 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.
- Chain-of-responsibility pattern
- Command objects are handled or passed on to other objects by logic-containing processing objects.
- Command pattern
- Command objects encapsulate an action and its parameters.
- Externalize the stack
- Turn a recursive function into an iterative function that uses a stack[1]
- Interpreter pattern
- Implement a specialized computer language to rapidly solve a specific set of problems.
- Iterator pattern
- Iterators 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 object pattern
- Acts as a default value of an object.
- Observer pattern
- 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.[2]
- Protocol stack
- Communications are handled by multiple layers, which form an encapsulation hierarchy[3]
- Publish–subscribe pattern
- 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.
- Scheduled-task pattern
- A task is scheduled to be performed at a particular interval or clock time (used in real-time computing).
- Single-serving visitor pattern
- Optimise the implementation of a visitor that is allocated, used only once, and then deleted.
- Specification pattern
- Recombinable business logic in a boolean fashion.
- State pattern
- A clean way for an object to partially change its type at runtime.
- Strategy pattern
- Algorithms can be selected on the fly, using composition.
- Template method pattern
- Describes the skeleton of a program; algorithms can be selected on the fly, using inheritance.
- Visitor pattern
- A way to separate an algorithm from an object.
See also
References
<templatestyles src="Reflist/styles.css" />
Script error: No such module "Check for unknown parameters".