No Esta Facil
  • 🌎About No Esta Facil
    • πŸ‘¨β€πŸ’»GitHub
    • πŸ“·Photography
    • πŸ—£οΈMy Speaker Bio
    • 🀝Disclaimer
    • πŸ“ˆGuilt Pile
      • Principal.dev
      • Tech Rocks Asia
  • πŸ“šBook Reviews
    • Sports
      • Ben Hogan's Five Lessons
    • Productivity
      • Smart Brevity
      • Nine Lies About Work: A Freethinking Leader’s Guide to the Real World
      • Think Again
      • Mastery
      • Talk Like Ted
      • The Hard Thing About Hard Things
      • The Courage to Be Disliked by Fumitake Koga and Ichiro Kishimi
    • Classic Texts
      • The Book of five rings
    • Technology
      • Amplifying Your Effectiveness: A Gem in Professional Growth Literature
      • AI Superpowers: China, Silicon Valley, and the New World Order
      • The Age of Agile
    • Business
      • Start with No by Jim Camp
      • Zero to One: Notes on Startups, or How to Build the Future by Peter Thiel
    • Health, fitness, and dieting
      • Outlive
    • Culture
      • Solito by Javier Zamora
  • Daily Goods
    • Continuous Education
      • Expanding Your Vocabulary
    • 🌡Cultura
      • Food
        • BBQ’n Like a Pro: Rub Recipes for Pork, Brisket, and Chicken
        • The Ultimate Mashed Potatoes with Bacon and Roasted Garlic
  • 🏌️My Golf Journey
    • Teeing off at ...
      • Oaks Quarry Golf, Riverside, CA
      • Education City Golf Club, Qatar, Doha
      • The Links at Spanish Bay, Pebble Beach, CA
      • Bayonet, Seaside, CA
      • Alta Sierra Country Club, Grass Valley, CA
    • Training
  • πŸ“Monthly Highlights [in TL;DR format]
    • FY23
      • El PeriΓ³dico - July 2023
      • El PeriΓ³dico - December 2023
      • El PeriΓ³dico - April 2023
      • El PeriΓ³dico - March 2023
      • El PeriΓ³dico - February 2023
      • El PeriΓ³dico - January 2023
      • El PeriΓ³dico - December 2022
    • FY24
      • January 2024
      • February 2024
      • March 2024
      • April 2024
    • FY25
  • πŸ‘¨β€πŸ’»The section on Software Engineering
    • ChatGPT Prompts
      • Usages
        • What are some flutter architectures?
      • Prompt Templates
        • Answer Misconceptions
    • Conferences and Bootcamps
      • Google Cloud BootCamp
      • Principal Developer Masterclass
    • Customer Engagement
      • Awards - Customer Hero
    • Engineering Manager
      • Mobile Application Development
        • Flutter Journal
          • App Release Resources
        • Accelerate Your Go-to-Market Strategy with Flutter
      • Understanding the Meaning of Software Requirements
      • Design Principles
        • Coupling
        • Routine
        • Software Design
          • The Trinity of Software Architecture: Coupling, Cohesion, and Information Hiding
      • General
        • Engineering Meetings
          • Steering the Conversation: Effective Strategies for Keeping Meetings Focused and Productive
    • Project Owner
      • Project Pressure, It Happens!
      • Strategic Leadership and Planning
    • Software Engineering
      • Overview
      • Design Patterns
        • Categories of Design Patterns
        • Choosing the Right Design Pattern for Problem-Solving in Programming
        • Singleton
      • Programming Languages
        • JavaScript
      • Toolkits
        • iTerm2
        • Developing on a Windows 11 machine
          • Setting up Typscript env
        • VS Code Extension
        • HTTPie
      • Best Practices
        • Pull Requests (PR's)
    • Solutions Engineer
      • Communication with executives
      • SE Toolkit
        • The Importance of Retros in Integration Processes
        • Meetings
          • Preparing for a Customer Meeting (Project-Based or Recurring)
          • Conducting a Productive Customer Meeting
          • Prepare and Send a Concise and Actionable Meeting Summary
            • Meeting Summary Template
        • Documentation
          • Adding an important notes section
          • Useful Resources
  • πŸ›«Travel
    • Asia
      • Singapore
      • Japan
      • South Korea
      • China
      • India
    • Caribbean Sea
      • Cuba
    • Europe
      • North America
        • Mexico
          • Guadalajara
        • Canada
    • Oceania
      • Fiji
    • Middle East
      • Dubai
      • Qatar
    • South America
      • Brazil
      • Peru
      • Columbia
    • In the planning stage ...
      • Antarctica
      • Africa
Powered by GitBook
On this page
  1. The section on Software Engineering
  2. Software Engineering
  3. Design Patterns

Categories of Design Patterns

Creational
Based on the concept of creating an object

Class

Factory Method

Makes an instance of several derived classes based on interfaced data or events

Object

Abstract Factory

Creates an instance of several families of classes without detailing concrete classes

Builder

Separates object construction from its representation; always creates the same type of object

Prototype

A fully initialized instance used for copying or cloning

Singleton

A class with only a single instance with global access points

Structural
Based on the idea of building blocks of objects

Class

Adaptor

Matches interfaces of different classes so that classes can work together despite incompatible interfaces

Object

Bridge

Separates an object;s interface from its implementation so that the two can vary independently

Composite

A structure of simple and composite objects that makes the total object more than just the sum of its parts

Decorator

Dynamically adds alternate processing to objects

Facade

A single class that hides the complexity of an entire subsystem

Flyweight

A fine-grained instance used for efficient sharing of information that is contained elsewhere

Proxy

A placeholder object representing the true object

Behavioral
Based on the way objects play and work together

Class

Interpreter

A way to include language elements in an application to match the grammar of the intended language

Template method

Creates the shell of an algorithm in a method, then defers the exact steps to a subclass

Object

Chain of responsibility

A way of passing a request between a chain of objects to find the object that can handle the request

Command

A way to separate the execution of a command from its invoker

Iterator

Sequentially accesses the elements of a collection without knowing the inner workings of the collection

Mediator

Defines simplified communication between classes to prevent a group of classes from referring explicitly to each other

Memento

Captures an object's internal state to be able to restore it later

Observer

A way of notifying change to a number of classes to ensure consistency between the classes

State

Alters an object's behavior when its state changes

Strategy

Encapsulates an algorithm inside a class, separating the selection from the implementation

Visitor

Adds a new operation to a class without changing the class

Reference: JavaScript Design Patterns, 2nd Edition by Addy Osmani

PreviousDesign PatternsNextChoosing the Right Design Pattern for Problem-Solving in Programming

Last updated 8 months ago

πŸ‘¨β€πŸ’»