<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=Behavioral_pattern</id>
	<title>Behavioral pattern - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=Behavioral_pattern"/>
	<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=Behavioral_pattern&amp;action=history"/>
	<updated>2026-04-19T18:26:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.sarg.dev/index.php?title=Behavioral_pattern&amp;diff=512651&amp;oldid=prev</id>
		<title>imported&gt;7804j: Split Publish–subscribe pattern and Observer pattern -- they are distinct</title>
		<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=Behavioral_pattern&amp;diff=512651&amp;oldid=prev"/>
		<updated>2025-06-08T20:17:16Z</updated>

		<summary type="html">&lt;p&gt;Split Publish–subscribe pattern and Observer pattern -- they are distinct&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{short description|Type of software design pattern}}&lt;br /&gt;
In [[software engineering]], &amp;#039;&amp;#039;&amp;#039;behavioral design patterns&amp;#039;&amp;#039;&amp;#039; are [[design pattern (computer science)|design pattern]]s that identify common communication patterns among objects. By doing so, these patterns increase flexibility in carrying out communication.&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
Examples of this type of design pattern include:&lt;br /&gt;
&lt;br /&gt;
;[[Blackboard design pattern]]&lt;br /&gt;
: 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&lt;br /&gt;
;[[Chain-of-responsibility pattern]]&lt;br /&gt;
: Command objects are handled or passed on to other objects by logic-containing processing objects&lt;br /&gt;
;[[Command pattern]]&lt;br /&gt;
: Command objects encapsulate an action and its parameters&lt;br /&gt;
;&amp;quot;Externalize the stack&amp;quot;&lt;br /&gt;
: Turn a [[Recursion (computer science)|recursive function]] into an [[iterative function]] that uses a [[call stack|stack]]&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
 |url          = http://c2.com/&lt;br /&gt;
 |title        = Externalize The Stack&lt;br /&gt;
 |date         = 2010-01-19&lt;br /&gt;
 |publisher    = c2.com&lt;br /&gt;
 |archive-url  = https://web.archive.org/web/20110303085751/http://c2.com/&lt;br /&gt;
 |archive-date = 2011-03-03&lt;br /&gt;
 |access-date  = 2012-05-21&lt;br /&gt;
 |url-status   = bot: unknown&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
;[[Interpreter pattern]]&lt;br /&gt;
: Implement a specialized computer language to rapidly solve a specific set of problems&lt;br /&gt;
;[[Iterator pattern]]&lt;br /&gt;
: [[Iterator]]s are used to access the elements of an aggregate object sequentially without exposing its underlying representation&lt;br /&gt;
;[[Mediator pattern]]&lt;br /&gt;
: Provides a unified interface to a set of interfaces in a subsystem&lt;br /&gt;
;[[Memento pattern]]&lt;br /&gt;
: Provides the ability to restore an object to its previous state (rollback)&lt;br /&gt;
;[[Null object pattern]]&lt;br /&gt;
: Designed to act as a default value of an object&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
 &amp;lt;dt&amp;gt;[[Observer pattern]]&amp;lt;/dt&amp;gt;&lt;br /&gt;
 &amp;lt;dd&amp;gt;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 &amp;#039;&amp;#039;&amp;#039;weak reference pattern&amp;#039;&amp;#039;&amp;#039; decouples an observer from an observable to avoid memory leaks in environments without automatic weak references.&amp;lt;ref&amp;gt;{{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}}&amp;lt;/ref&amp;gt;&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
;[[Protocol stack]]&lt;br /&gt;
: Communications are handled by multiple layers, which form an encapsulation hierarchy&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
 |url          = http://c2.com/&lt;br /&gt;
 |title        = Protocol Stack&lt;br /&gt;
 |date         = 2006-09-05&lt;br /&gt;
 |publisher    = c2.com&lt;br /&gt;
 |archive-url  = https://web.archive.org/web/20110303085751/http://c2.com/&lt;br /&gt;
 |archive-date = 2011-03-03&lt;br /&gt;
 |access-date  = 2012-05-21&lt;br /&gt;
 |url-status   = bot: unknown&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
;[[Publish–subscribe pattern]]&amp;lt;dd&amp;gt;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.&amp;lt;/dd&amp;gt;&lt;br /&gt;
;[[Scheduled-task pattern]]&lt;br /&gt;
: A task is scheduled to be performed at a particular interval or clock time (used in [[real-time computing]])&lt;br /&gt;
;[[Single-serving visitor pattern]]&lt;br /&gt;
: Optimise the implementation of a visitor that is allocated, used only once, and then deleted&lt;br /&gt;
;[[Specification pattern]]&lt;br /&gt;
: Recombinable [[business logic]] in a [[boolean algebra|boolean]] fashion&lt;br /&gt;
;[[State pattern]]&lt;br /&gt;
: A clean way for an object to partially change its type at runtime&lt;br /&gt;
;[[Strategy pattern]]&lt;br /&gt;
: Algorithms can be selected on the fly, using composition&lt;br /&gt;
;[[Template method pattern]]&lt;br /&gt;
: Describes the [[program skeleton|skeleton]] of a program; algorithms can be selected on the fly, using [[Inheritance (object-oriented programming)|inheritance]]&lt;br /&gt;
;[[Visitor pattern]]&lt;br /&gt;
: A way to separate an algorithm from an object&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Concurrency pattern]]&lt;br /&gt;
* [[Creational pattern]]&lt;br /&gt;
* [[Structural pattern]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
{{Design Patterns patterns}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Software design patterns]]&lt;/div&gt;</summary>
		<author><name>imported&gt;7804j</name></author>
	</entry>
</feed>