INI
GoF Design Patterns - INI
GoF Design Patterns are 23 reusable solutions for object-oriented software design proposed in the 1994 book 'Design Patterns: Elements of Reusable Object-Oriented Software' by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (collectively known as the 'Gang of Four'). Divided into three categories—Creational, Structural, and Behavioral patterns—they are widely used to improve software reusability, maintainability, and scalability.
design patterns
GoF
object-oriented
software design
programming
[item.factory-method]
code=C01
slug=factory-method
name=Factory Method
description=Defines an interface for creating objects, but lets subclasses decide which class to instantiate.
category=Creational Pattern
[item.abstract-factory]
code=C02
slug=abstract-factory
name=Abstract Factory
description=Provides an interface for creating families of related objects without specifying concrete classes.
category=Creational Pattern
[item.singleton]
code=C03
slug=singleton
name=Singleton
description=Ensures a class has only one instance and provides a global point of access to it.
category=Creational Pattern
[item.prototype]
code=C04
slug=prototype
name=Prototype
description=Creates new objects by copying existing ones.
category=Creational Pattern
[item.builder]
code=C05
slug=builder
name=Builder
description=Constructs complex objects step by step, separating construction from representation.
category=Creational Pattern
[item.adapter]
code=S01
slug=adapter
name=Adapter
description=Allows incompatible interfaces to work together.
category=Structural Pattern
[item.bridge]
code=S02
slug=bridge
name=Bridge
description=Separates abstraction from implementation, allowing both to vary independently.
category=Structural Pattern
[item.composite]
code=S03
slug=composite
name=Composite
description=Composes objects into tree structures to represent part-whole hierarchies.
category=Structural Pattern
[item.decorator]
code=S04
slug=decorator
name=Decorator
description=Adds new functionality to objects dynamically without altering their structure.
category=Structural Pattern
[item.facade]
code=S05
slug=facade
name=Facade
description=Provides a simplified interface to a complex subsystem.
category=Structural Pattern
[item.flyweight]
code=S06
slug=flyweight
name=Flyweight
description=Reduces memory usage by sharing data among similar objects.
category=Structural Pattern
[item.proxy]
code=S07
slug=proxy
name=Proxy
description=Provides a surrogate or placeholder for another object to control access to it.
category=Structural Pattern
[item.chain-of-responsibility]
code=B01
slug=chain-of-responsibility
name=Chain of Responsibility
description=Passes requests along a chain of handlers until one handles it.
category=Behavioral Pattern
[item.command]
code=B02
slug=command
name=Command
description=Encapsulates a request as an object, decoupling sender from receiver.
category=Behavioral Pattern
[item.interpreter]
code=B03
slug=interpreter
name=Interpreter
description=Defines a representation for a language's grammar and interprets sentences.
category=Behavioral Pattern
[item.iterator]
code=B04
slug=iterator
name=Iterator
description=Provides a way to access elements of a collection sequentially.
category=Behavioral Pattern
[item.mediator]
code=B05
slug=mediator
name=Mediator
description=Defines how objects interact through a mediator, reducing direct dependencies.
category=Behavioral Pattern
[item.memento]
code=B06
slug=memento
name=Memento
description=Captures and restores an object's internal state without violating encapsulation.
category=Behavioral Pattern
[item.observer]
code=B07
slug=observer
name=Observer
description=Notifies multiple observers automatically when subject's state changes.
category=Behavioral Pattern
[item.state]
code=B08
slug=state
name=State
description=Allows an object to alter its behavior when its internal state changes.
category=Behavioral Pattern
[item.strategy]
code=B09
slug=strategy
name=Strategy
description=Encapsulates algorithms and makes them interchangeable at runtime.
category=Behavioral Pattern
[item.template-method]
code=B10
slug=template-method
name=Template Method
description=Defines the skeleton of an algorithm, deferring some steps to subclasses.
category=Behavioral Pattern
[item.visitor]
code=B11
slug=visitor
name=Visitor
description=Adds new operations to objects without modifying their classes.
category=Behavioral Pattern