Types of Design Patterns
The Gang of Four (GoF) originally divided design patterns into three categories:
- Creational
- Structural
- Behavioral
Some Major Design Patterns
- Abstract Factory (GoF, Creational)
- See Factory.
- Action Pattern
- Adapter Pattern (GoF, Structural)
- Bridge Pattern (GoF, Structural)
- Builder Pattern (GoF, Creational)
- Chain of Responsibility Pattern (GoF, Behavioral)
- Command Pattern (GoF, Behavioral)
- Component Pattern
- Composite Pattern (GoF, Structural)
- Container Pattern (POSA4)
- Eduardo Vedes, freecodecamp, 2018. (react)
- CQRS Pattern
- Decorator Pattern (GoF, Structural)
- Dependency Injection Pattern
- Josh Pollock, torque, 2017. (php)
- (Intermediate) Stackoverflow’s What is Dependency Injection?
- Recommend starting with Tiago Arrais’ answer then moving back to wds’ answer.
- Dirty Flag Pattern
- Double Buffer Pattern
- Event Queue Pattern
- Facade Pattern (GoF, Structural)
- Factory / Abstract Factory Pattern (GoF, Creational)
- Wahid Tanner, takeupcode, 2016.
- Wahid Tanner, takeupcode, 2016. (abstract)
- Isaac Rodriguez, realpython. (python)
- Fluent Builder Pattern
- Flux Pattern
- Flyweight Pattern (GoF, Structural)
- Game Loop Pattern.
- Interpreter Pattern (GoF, Behavioral)
- Iterator Pattern (GoF, Behavioral)
- Mediator Pattern (GoF, Behavioral)
- Memento Pattern (GoF, Behavioral)
- Model-View-Controller (MVC) Pattern (POSA1, Architectural)
- Observer Pattern (GoF, Behavioral)
- Object Pool Pattern
- Prototype Pattern (GoF, Creational)
- Proxy Pattern (GoF, Structural)
- Repository Pattern
- Derek Comartin, codeopinion, 2019. (avoiding)
- Service Location Pattern
- Singleton Pattern (GoF, Creational)
- Subclass Method Pattern
- State Pattern (GoF, Behavioral)
- Strategy Pattern (GoF, Behavioral)
- Template Method Pattern (GoF, Behavioral)
- Update Method Pattern
- Visitor Pattern (GoF, Behavioral)
Web Design Patterns
- Front Controller Pattern
- Lazy Loading Pattern
Distributed Computing Design Patterns
- Object Request Broker (ORB) Pattern
Additional Design Pattern Resources
- Portland Pattern Repository.
- Design Patterns Game (Gang of Four Patterns in JS).
- Java Design Patterns.
- Addy Osmani’s Learning JavaScript Design Patterns (ebook, 2017).
- Sufyan bin Uzayr. A Look at Popular JavaScript Design Patterns. torque, 2016.
- Touches briefly on Creational, Structural, Behavioral, Module Design, Singleton, Mediator.
- Sameeha Rahman. The 3 Types of Design Patterns All Developers Should Know. freecodecamp, 2019.
- Covers creational (singleton), structural (decorator), and behavioral (command).
- DesignPatternsPHP.
- Covers creational (AbstractFactory, Builder, FactoryMethod, Pool, Prototype, SimpleFactory, Singleton, StaticFactory), structural (Adapter, Bridge, Composite, DataMapper, Decorator, DependencyInjection, Facade, FluentInterface, Flyweight, Proxy, Registry), and Behavioral (ChainOfResponsibilities, Command, Iterator, Mediator, Memento, NullObject, Observer, Specification, State, Strategy, TemplateMethod, and Visitor) as well as EAV, Repository, and ServiceLocator.
- Brandon Rhode’s Python Design Patterns.
- Martin Fowler’s Catalog of Patterns of Enterprise Application Architecture, 2003.
- From the source himself. Covers domain logic patterns (transaction script, domain model, table module, service layer), data source architectural patterns (table data gateway, row data gateway, active record, data mapper), object-relational behavioral patterns (unit of work, identity map, lazy load), object-relational structural patterns (identity field, foreign key mapping…), object-relational metadata mapping patterns, web presentation patterns, distribution patterns, offline concurrency patterns, session state patterns, base patterns.
- Davide Taibi, Serverless Patterns, 2020.
- Karthik Iyengar’s Functional Programming Patterns: A Cookbook. freecodecamp, 2019.
- Tanmay Deshpande. Modern-Day Architecture Design Patterns for Software Professionals. BetterProgramming, 10/2020.
- Covers at a high level Circuit Breaker, CQRS, Event Sourcing, Sidecar, Backend-for-Frontend, and Strangler.
- Wikipedia, not elsewhere reference: