SlideShare a Scribd company logo
C     Abstract Factory                           S       Facade                                       S      Proxy                                                                                                                          Memento
                                                                                                                                                  Memento
                                                                                                                                                                                                                                    -state
                                                                                                                                                                                                    Caretaker
                                                                                                      B      Observer
S     Adapter                                    C       Factory Method
                                                                                                                                                  Type: Behavioral
                                                                                                     C       Singleton
S     Bridge                                     S       Flyweight
                                                                                                                                                  What it is:
                                                                                                                                                  Without violating encapsulation, capture
                                                                                                      B      State
C     Builder                                    B       Interpreter
                                                                                                                                                  and externalize an object's internal state
                                                                                                                                                  so that the object can be restored to this
                                                                                                      B      Strategy
B     Chain of Responsibility                    B       Iterator                                                                                                                                               Originator
                                                                                                                                                  state later.
                                                                                                                                                                                                    -state
                                                                                                      B      Template Method
B     Command                                    B       Mediator
                                                                                                                                                                                                    +setMemento(in m : Memento)
                                                                                                      B      Visitor
S     Composite                                  B       Memento                                                                                                                                    +createMemento()

S     Decorator                                  C       Prototype


                                                                                                                                                                                                         «interface»
                                                                                                                                                                                                                                notifies
                                                                                                                                                   Observer
                                                                                Chain of Responsibility                                                                                                                                         «interface»
                                                                successor
                                  «interface»                                                                                                                                                             Subject
                                                                                                                                                                                                                                                 Observer
                                   Handler                                                                                                                                                        +attach(in o : Observer)
       Client
                                                                                                                                                   Type: Behavioral                                                                         +update()
                                                                                Type: Behavioral
                              +handleRequest()                                                                                                                                                    +detach(in o : Observer)
                                                                                                                                                                                                  +notify()
                                                                                                                                                   What it is:
                                                                                What it is:
                                                                                                                                                   Define a one-to-many dependency between
                                                                                Avoid coupling the sender of a request to
                                                                                                                                                   objects so that when one object changes
                                                                                its receiver by giving more than one object
                                                                                                                                                   state, all its dependents are notified and
                                                                                a chance to handle the request. Chain the
                                                                                                                                                   updated automatically.
                                                                                receiving objects and pass the request
                                                                                                                                                                                                      ConcreteSubject                       ConcreteObserver
                                                                                                                                                                                                                              observes
                                                                                along the chain until an object handles it.
                 ConcreteHandler1             ConcreteHandler2
                                                                                                                                                                                                     -subjectState                         -observerState
                 +handleRequest()            +handleRequest()
                                                                                                                                                                                                                                           +update()




                                                                               Command                                                            State                                               Context
        Client                                        Invoker
                                                                                                                                                                                                +request()
                                                                                                                                                  Type: Behavioral                                                                «interface»
                                                                               Type: Behavioral
                                                                                                                                                                                                                                     State
                    ConcreteCommand                                                                                                               What it is:
                                                                               What it is:                                                                                                                                    +handle()
                                                                                                                                                  Allow an object to alter its behavior when
                                                                               Encapsulate a request as an object,
                    +execute()
                                                                                                                                                  its internal state changes. The object will
                                                                               thereby letting you parameterize clients
                                                                                                                                                  appear to change its class.
                                                                               with different requests, queue or log
                                                                               requests, and support undoable operations.
                                                  Command
       Receiver
                                            +execute()                                                                                                                                                             ConcreteState1             ConcreteState2
 +action()
                                                                                                                                                                                                                  +handle()                 +handle()




                                                                                                                                                  Strategy
        Client
                                                                               Interpreter                                                                                                            Context
                                                                                                                                                  Type: Behavioral                                                              «interface»
                                                                               Type: Behavioral                                                                                                                                  Strategy
                                 «interface»
                                                                                                                                                  What it is:
                                                                                                                                                                                                                             +execute()
                             AbstractExpression
       Context                                                                 What it is:                                                        Define a family of algorithms,
                             +interpret()                                      Given a language, define a representation                          encapsulate each one, and make them
                                                                               for its grammar along with an interpreter                          interchangeable. Lets the algorithm vary
                                                                               that uses the representation to interpret                          independently from
                                                                               sentences in the language.                                         clients that use it.
                                                                                                                                                                                                              ConcreteStrategyA            ConcreteStrategyB
     TerminalExpression              NonterminalExpression                                                                                                                                                    +execute()                   +execute()
    +interpret() : Context           +interpret() : Context




                              Client
                                                                                                                                                   Template Method
                                                                               Iterator                                                                                                                                AbstractClass
                                                                                                                                                                                                                     +templateMethod()
                                                                                                                                                   Type: Behavioral
                                                                               Type: Behavioral
                                                «interface»
        «interface»                                                                                                                                                                                                  #subMethod()
                                                  Iterator
        Aggregate                                                                                                                                  What it is:
                                                                               What it is:
                                            +next()                                                                                                Define the skeleton of an algorithm in an
    +createIterator()                                                          Provide a way to access the elements of
                                                                                                                                                   operation, deferring some steps to subclasses.
                                                                               an aggregate object sequentially without
                                                                                                                                                   Lets subclasses redefine certain steps
                                                                               exposing its underlying representation.
                                                                                                                                                   of an algorithm without changing the
                                                                                                                                                                                                                       ConcreteClass
                                                                                                                                                   algorithm's structure.
                                             ConcreteIterator                                                                                                                                                        +subMethod()
    ConcreteAggregate
                                            +next() : Context
+createIterator() : Context




                                                                                                                                                                                                    «interface»
                                                                                                                                                 Visitor
                          informs
                                                                               Mediator                                                                                                               Visitor
                                                 «interface»                                                                                                                                                                                        Client
      Mediator                                                                                                                                                                      +visitElementA(in a : ConcreteElementA)
                                                                                                                                                 Type: Behavioral
                                                 Colleague
                                                                               Type: Behavioral                                                                                     +visitElementB(in b : ConcreteElementB)
                                                                                                                                                 What it is:
                                                                               What it is:                                                                                                                                                       «interface»
                                                                                                                                                 Represent an operation to be
                                                                               Define an object that encapsulates how a                                                                                                                           Element
                                                                                                                                                 performed on the elements of an                 ConcreteVisitor
                                                                               set of objects interact. Promotes loose                                                                                                                      +accept(in v : Visitor)
                                                                                                                                                 object structure. Lets you define a
                                                                               coupling by keeping objects from referring
                                                                                                                                                 new operation without changing +visitElementA(in a : ConcreteElementA)
                                                                               to each other explicitly and it lets you vary
                          updates                                                                                                                the classes of the elements on      +visitElementB(in b : ConcreteElementB)
                                                                               their interactions independently.
                                                                                                                                                 which it operates.
ConcreteMediator                            ConcreteColleague
                                                                                                                                                                                     ConcreteElementA
                                                                                                                                                                                                                        ConcreteElementB
                                                                                                                                                                                    +accept(in v : Visitor)
                                                                                                                                                                                                                       +accept(in v : Visitor)
Copyright © 2007 Jason S. McDonald           Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995). Design Patterns: Elements of
                                                 Reusable Object-Oriented Software. Reading, Massachusetts: Addison Wesley Longman, Inc..
http://www.McDonaldLand.info
Adapter
     «interface»
                                                                                                               Proxy                                                    Client
      Adapter                               Client
                                                                 Type: Structural
 +operation()                                                                                                  Type: Structural
                                                                                                                                                                                                 «interface»
                                                                 What it is:                                                                                                                       Subject
                                                                                                               What it is:
                                                                 Convert the interface of a class into                                                                                     +request()
                                                                                                               Provide a surrogate or placeholder for
                                                                 another interface clients expect. Lets        another object to control access to it.
                                                                 classes work together that couldn't
  ConcreteAdapter
                                                                 otherwise because of incompatible
                                           Adaptee
                                                                 interfaces.
 -adaptee
                                     +adaptedOperation()                                                                                                                                          represents
                                                                                                                                                                      RealSubject                                                 Proxy
 +operation()
                                                                                                                                                                 +request()                                             +request()




     Abstraction                                                                                                                                                                                     Client
                                                                 Bridge                                         Abstract Factory
  +operation()
                                                                                                                                                             «interface»
                                                                 Type: Structural
                                  «interface»
                                                                                                                Type: Creational                           AbstractFactory
                                 Implementor
                                                                                                                                                                                                                           «interface»
                                                                                                                                                         +createProductA()
                                                                 What it is:
                              +operationImpl()                                                                                                                                                                           AbstractProduct
                                                                                                                What it is:                              +createProductB()
                                                                 Decouple an abstraction from its
                                                                                                                Provides an interface for creating
                                                                 implementation so that the two can vary
                                                                                                                families of related or dependent
                                                                 independently.
                                                                                                                objects without specifying their
                                                                                                                concrete class.
                                                                                                                                                          ConcreteFactory
  ConcreteImplementorA              ConcreteImplementorB                                                                                                                                                               ConcreteProduct
                                                                                                                                                         +createProductA()
  +operationImpl()                  +operationImpl()                                                                                                     +createProductB()



                   «interface»
                                                                                                                                                                                                                    «interface»
                                                                 Composite                                     Builder
                   Component                                                                                                                                         Director
                                                                                                                                                                                                                      Builder
                                                  children
            +operation()
                                                                                                                                                             +construct()                                     +buildPart()
                                                                 Type: Structural                              Type: Creational
            +add(in c : Composite)
            +remove(in c : Composite)
                                                                 What it is:                                   What it is:
            +getChild(in i : int)
                                                                 Compose objects into tree structures to       Separate the construction of a
                                                                 represent part-whole hierarchies. Lets        complex object from its representing
                                                                 clients treat individual objects and          so that the same construction
                                                                 compositions of objects uniformly.            process can create different                                                                     ConcreteBuilder
                                         Composite                                                             representations.
                                                                                                                                                                                                              +buildPart()
        Leaf                     +operation()                                                                                                                                                                 +getResult()
                                 +add(in c : Composite)
 +operation()
                                 +remove(in c : Composite)
                                 +getChild(in i : int)


     «interface»
                                                                 Decorator
                                      ConcreteComponent
                                                                                                                Factory Method                                                                                              Creator
     Component                                                                                                                                                         «interface»
                                      +operation()                                                                                                                       Product
  +operation()                                                                                                                                                                                                      +factoryMethod()
                                                                 Type: Structural                               Type: Creational
                                                                                                                                                                                                                    +anOperation()
                                                                 What it is:                                    What it is:
                                          Decorator
                                                                 Attach additional responsibilities to an       Define an interface for creating an
                                      +operation()               object dynamically. Provide a flexible         object, but let subclasses decide which
                                                                 alternative to sub-classing for extending      class to instantiate. Lets a class defer
                                                                 functionality.                                 instantiation to subclasses.
             ConcreteDecorator
                                                                                                                                                                                                                     ConcreteCreator
                                                                                                                                                                  ConcreteProduct
             -addedState
                                                                                                                                                                                                                    +factoryMethod()
             +operation()
             +addedBehavior()



                                                                                                                                                                  Client
                                                                 Facade                                         Prototype
                           Facade
                                           Complex system
                                                                                                                                                                                                 «interface»
                                                                 Type: Structural                               Type: Creational
                                                                                                                                                                                                 Prototype
                                                                                                                                                                                           +clone()
                                                                 What it is:                                    What it is:
                                                                 Provide a unified interface to a set of        Specify the kinds of objects to create
                                                                 interfaces in a subsystem. Defines a high-     using a prototypical instance, and
                                                                 level interface that makes the subsystem       create new objects by copying this
                                                                 easier to use.                                 prototype.

                                                                                                                                                                ConcretePrototype1                                 ConcretePrototype2
                                                                                                                                                               +clone()                                           +clone()




                                          «interface»
 FlyweightFactory
                                           Flyweight
                                                                 Flyweight                                     Singleton
+getFlyweight(in key)            +operation(in extrinsicState)
                                                                                                                                                                                                   Singleton
                                                                                                               Type: Creational
                                                                 Type: Structural
                                                                                                                                                                                          -static uniqueInstance
       Client                                                                                                  What it is:                                                                -singletonData
                                                                 What it is:
                                                                                                               Ensure a class only has one instance and
                                                                 Use sharing to support large numbers of                                                                                  +static instance()
                                                                                                               provide a global point of access to it.
                                                                 fine grained objects efficiently.                                                                                        +SingletonOperation()
              ConcreteFlyweight
         -intrinsicState
                                             UnsharedConcreteFlyweight
         +operation(in extrinsicState)
                                            -allState

                                            +operation(in extrinsicState)                                     Copyright © 2007 Jason S. McDonald      Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995). Design Patterns: Elements of
                                                                                                                                                          Reusable Object-Oriented Software. Reading, Massachusetts: Addison Wesley Longman, Inc..
                                                                                                              http://www.McDonaldLand.info

More Related Content

Viewers also liked

11 Understanding and Influencing the PL/SQL Compilar
11 Understanding and Influencing the PL/SQL Compilar11 Understanding and Influencing the PL/SQL Compilar
11 Understanding and Influencing the PL/SQL Compilar
rehaniltifat
 
Transcript of Presentation(Simple & Compound Interest) for Audience
Transcript of Presentation(Simple & Compound Interest) for AudienceTranscript of Presentation(Simple & Compound Interest) for Audience
Transcript of Presentation(Simple & Compound Interest) for Audience
rehaniltifat
 
Case study what you can take to the bank(primary functions)
Case study   what you can take to the bank(primary functions)Case study   what you can take to the bank(primary functions)
Case study what you can take to the bank(primary functions)
rehaniltifat
 
09 Managing Dependencies
09 Managing Dependencies09 Managing Dependencies
09 Managing Dependencies
rehaniltifat
 
02 Writing Executable Statments
02 Writing Executable Statments02 Writing Executable Statments
02 Writing Executable Statments
rehaniltifat
 
07 Using Oracle-Supported Package in Application Development
07 Using Oracle-Supported Package in Application Development07 Using Oracle-Supported Package in Application Development
07 Using Oracle-Supported Package in Application Development
rehaniltifat
 
06 Using More Package Concepts
06 Using More Package Concepts06 Using More Package Concepts
06 Using More Package Concepts
rehaniltifat
 
03 Writing Control Structures, Writing with Compatible Data Types Using Expli...
03 Writing Control Structures, Writing with Compatible Data Types Using Expli...03 Writing Control Structures, Writing with Compatible Data Types Using Expli...
03 Writing Control Structures, Writing with Compatible Data Types Using Expli...
rehaniltifat
 
08 Dynamic SQL and Metadata
08 Dynamic SQL and Metadata08 Dynamic SQL and Metadata
08 Dynamic SQL and Metadata
rehaniltifat
 
05 Creating Stored Procedures
05 Creating Stored Procedures05 Creating Stored Procedures
05 Creating Stored Procedures
rehaniltifat
 
Remote DBA Experts 11g Features
Remote DBA Experts 11g FeaturesRemote DBA Experts 11g Features
Remote DBA Experts 11g Features
Remote DBA Experts
 
04 Handling Exceptions
04 Handling Exceptions04 Handling Exceptions
04 Handling Exceptions
rehaniltifat
 
10 Creating Triggers
10 Creating Triggers10 Creating Triggers
10 Creating Triggers
rehaniltifat
 
Turbocharge SQL Performance in PL/SQL with Bulk Processing
Turbocharge SQL Performance in PL/SQL with Bulk ProcessingTurbocharge SQL Performance in PL/SQL with Bulk Processing
Turbocharge SQL Performance in PL/SQL with Bulk Processing
Steven Feuerstein
 
Oracle - Program with PL/SQL - Lession 04
Oracle - Program with PL/SQL - Lession 04Oracle - Program with PL/SQL - Lession 04
Oracle - Program with PL/SQL - Lession 04
Thuan Nguyen
 
Oracle - Program with PL/SQL - Lession 10
Oracle - Program with PL/SQL - Lession 10Oracle - Program with PL/SQL - Lession 10
Oracle - Program with PL/SQL - Lession 10
Thuan Nguyen
 
Oracle - Program with PL/SQL - Lession 18
Oracle - Program with PL/SQL - Lession 18Oracle - Program with PL/SQL - Lession 18
Oracle - Program with PL/SQL - Lession 18
Thuan Nguyen
 
Oracle - Program with PL/SQL - Lession 07
Oracle - Program with PL/SQL - Lession 07Oracle - Program with PL/SQL - Lession 07
Oracle - Program with PL/SQL - Lession 07
Thuan Nguyen
 

Viewers also liked (18)

11 Understanding and Influencing the PL/SQL Compilar
11 Understanding and Influencing the PL/SQL Compilar11 Understanding and Influencing the PL/SQL Compilar
11 Understanding and Influencing the PL/SQL Compilar
 
Transcript of Presentation(Simple & Compound Interest) for Audience
Transcript of Presentation(Simple & Compound Interest) for AudienceTranscript of Presentation(Simple & Compound Interest) for Audience
Transcript of Presentation(Simple & Compound Interest) for Audience
 
Case study what you can take to the bank(primary functions)
Case study   what you can take to the bank(primary functions)Case study   what you can take to the bank(primary functions)
Case study what you can take to the bank(primary functions)
 
09 Managing Dependencies
09 Managing Dependencies09 Managing Dependencies
09 Managing Dependencies
 
02 Writing Executable Statments
02 Writing Executable Statments02 Writing Executable Statments
02 Writing Executable Statments
 
07 Using Oracle-Supported Package in Application Development
07 Using Oracle-Supported Package in Application Development07 Using Oracle-Supported Package in Application Development
07 Using Oracle-Supported Package in Application Development
 
06 Using More Package Concepts
06 Using More Package Concepts06 Using More Package Concepts
06 Using More Package Concepts
 
03 Writing Control Structures, Writing with Compatible Data Types Using Expli...
03 Writing Control Structures, Writing with Compatible Data Types Using Expli...03 Writing Control Structures, Writing with Compatible Data Types Using Expli...
03 Writing Control Structures, Writing with Compatible Data Types Using Expli...
 
08 Dynamic SQL and Metadata
08 Dynamic SQL and Metadata08 Dynamic SQL and Metadata
08 Dynamic SQL and Metadata
 
05 Creating Stored Procedures
05 Creating Stored Procedures05 Creating Stored Procedures
05 Creating Stored Procedures
 
Remote DBA Experts 11g Features
Remote DBA Experts 11g FeaturesRemote DBA Experts 11g Features
Remote DBA Experts 11g Features
 
04 Handling Exceptions
04 Handling Exceptions04 Handling Exceptions
04 Handling Exceptions
 
10 Creating Triggers
10 Creating Triggers10 Creating Triggers
10 Creating Triggers
 
Turbocharge SQL Performance in PL/SQL with Bulk Processing
Turbocharge SQL Performance in PL/SQL with Bulk ProcessingTurbocharge SQL Performance in PL/SQL with Bulk Processing
Turbocharge SQL Performance in PL/SQL with Bulk Processing
 
Oracle - Program with PL/SQL - Lession 04
Oracle - Program with PL/SQL - Lession 04Oracle - Program with PL/SQL - Lession 04
Oracle - Program with PL/SQL - Lession 04
 
Oracle - Program with PL/SQL - Lession 10
Oracle - Program with PL/SQL - Lession 10Oracle - Program with PL/SQL - Lession 10
Oracle - Program with PL/SQL - Lession 10
 
Oracle - Program with PL/SQL - Lession 18
Oracle - Program with PL/SQL - Lession 18Oracle - Program with PL/SQL - Lession 18
Oracle - Program with PL/SQL - Lession 18
 
Oracle - Program with PL/SQL - Lession 07
Oracle - Program with PL/SQL - Lession 07Oracle - Program with PL/SQL - Lession 07
Oracle - Program with PL/SQL - Lession 07
 

Recently uploaded

A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
Intelisync
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdfNunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
flufftailshop
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
Shinana2
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
LucaBarbaro3
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
Hiike
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 

Recently uploaded (20)

A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdfNunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 

Designpatternscard

  • 1. C Abstract Factory S Facade S Proxy Memento Memento -state Caretaker B Observer S Adapter C Factory Method Type: Behavioral C Singleton S Bridge S Flyweight What it is: Without violating encapsulation, capture B State C Builder B Interpreter and externalize an object's internal state so that the object can be restored to this B Strategy B Chain of Responsibility B Iterator Originator state later. -state B Template Method B Command B Mediator +setMemento(in m : Memento) B Visitor S Composite B Memento +createMemento() S Decorator C Prototype «interface» notifies Observer Chain of Responsibility «interface» successor «interface» Subject Observer Handler +attach(in o : Observer) Client Type: Behavioral +update() Type: Behavioral +handleRequest() +detach(in o : Observer) +notify() What it is: What it is: Define a one-to-many dependency between Avoid coupling the sender of a request to objects so that when one object changes its receiver by giving more than one object state, all its dependents are notified and a chance to handle the request. Chain the updated automatically. receiving objects and pass the request ConcreteSubject ConcreteObserver observes along the chain until an object handles it. ConcreteHandler1 ConcreteHandler2 -subjectState -observerState +handleRequest() +handleRequest() +update() Command State Context Client Invoker +request() Type: Behavioral «interface» Type: Behavioral State ConcreteCommand What it is: What it is: +handle() Allow an object to alter its behavior when Encapsulate a request as an object, +execute() its internal state changes. The object will thereby letting you parameterize clients appear to change its class. with different requests, queue or log requests, and support undoable operations. Command Receiver +execute() ConcreteState1 ConcreteState2 +action() +handle() +handle() Strategy Client Interpreter Context Type: Behavioral «interface» Type: Behavioral Strategy «interface» What it is: +execute() AbstractExpression Context What it is: Define a family of algorithms, +interpret() Given a language, define a representation encapsulate each one, and make them for its grammar along with an interpreter interchangeable. Lets the algorithm vary that uses the representation to interpret independently from sentences in the language. clients that use it. ConcreteStrategyA ConcreteStrategyB TerminalExpression NonterminalExpression +execute() +execute() +interpret() : Context +interpret() : Context Client Template Method Iterator AbstractClass +templateMethod() Type: Behavioral Type: Behavioral «interface» «interface» #subMethod() Iterator Aggregate What it is: What it is: +next() Define the skeleton of an algorithm in an +createIterator() Provide a way to access the elements of operation, deferring some steps to subclasses. an aggregate object sequentially without Lets subclasses redefine certain steps exposing its underlying representation. of an algorithm without changing the ConcreteClass algorithm's structure. ConcreteIterator +subMethod() ConcreteAggregate +next() : Context +createIterator() : Context «interface» Visitor informs Mediator Visitor «interface» Client Mediator +visitElementA(in a : ConcreteElementA) Type: Behavioral Colleague Type: Behavioral +visitElementB(in b : ConcreteElementB) What it is: What it is: «interface» Represent an operation to be Define an object that encapsulates how a Element performed on the elements of an ConcreteVisitor set of objects interact. Promotes loose +accept(in v : Visitor) object structure. Lets you define a coupling by keeping objects from referring new operation without changing +visitElementA(in a : ConcreteElementA) to each other explicitly and it lets you vary updates the classes of the elements on +visitElementB(in b : ConcreteElementB) their interactions independently. which it operates. ConcreteMediator ConcreteColleague ConcreteElementA ConcreteElementB +accept(in v : Visitor) +accept(in v : Visitor) Copyright © 2007 Jason S. McDonald Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995). Design Patterns: Elements of Reusable Object-Oriented Software. Reading, Massachusetts: Addison Wesley Longman, Inc.. http://www.McDonaldLand.info
  • 2. Adapter «interface» Proxy Client Adapter Client Type: Structural +operation() Type: Structural «interface» What it is: Subject What it is: Convert the interface of a class into +request() Provide a surrogate or placeholder for another interface clients expect. Lets another object to control access to it. classes work together that couldn't ConcreteAdapter otherwise because of incompatible Adaptee interfaces. -adaptee +adaptedOperation() represents RealSubject Proxy +operation() +request() +request() Abstraction Client Bridge Abstract Factory +operation() «interface» Type: Structural «interface» Type: Creational AbstractFactory Implementor «interface» +createProductA() What it is: +operationImpl() AbstractProduct What it is: +createProductB() Decouple an abstraction from its Provides an interface for creating implementation so that the two can vary families of related or dependent independently. objects without specifying their concrete class. ConcreteFactory ConcreteImplementorA ConcreteImplementorB ConcreteProduct +createProductA() +operationImpl() +operationImpl() +createProductB() «interface» «interface» Composite Builder Component Director Builder children +operation() +construct() +buildPart() Type: Structural Type: Creational +add(in c : Composite) +remove(in c : Composite) What it is: What it is: +getChild(in i : int) Compose objects into tree structures to Separate the construction of a represent part-whole hierarchies. Lets complex object from its representing clients treat individual objects and so that the same construction compositions of objects uniformly. process can create different ConcreteBuilder Composite representations. +buildPart() Leaf +operation() +getResult() +add(in c : Composite) +operation() +remove(in c : Composite) +getChild(in i : int) «interface» Decorator ConcreteComponent Factory Method Creator Component «interface» +operation() Product +operation() +factoryMethod() Type: Structural Type: Creational +anOperation() What it is: What it is: Decorator Attach additional responsibilities to an Define an interface for creating an +operation() object dynamically. Provide a flexible object, but let subclasses decide which alternative to sub-classing for extending class to instantiate. Lets a class defer functionality. instantiation to subclasses. ConcreteDecorator ConcreteCreator ConcreteProduct -addedState +factoryMethod() +operation() +addedBehavior() Client Facade Prototype Facade Complex system «interface» Type: Structural Type: Creational Prototype +clone() What it is: What it is: Provide a unified interface to a set of Specify the kinds of objects to create interfaces in a subsystem. Defines a high- using a prototypical instance, and level interface that makes the subsystem create new objects by copying this easier to use. prototype. ConcretePrototype1 ConcretePrototype2 +clone() +clone() «interface» FlyweightFactory Flyweight Flyweight Singleton +getFlyweight(in key) +operation(in extrinsicState) Singleton Type: Creational Type: Structural -static uniqueInstance Client What it is: -singletonData What it is: Ensure a class only has one instance and Use sharing to support large numbers of +static instance() provide a global point of access to it. fine grained objects efficiently. +SingletonOperation() ConcreteFlyweight -intrinsicState UnsharedConcreteFlyweight +operation(in extrinsicState) -allState +operation(in extrinsicState) Copyright © 2007 Jason S. McDonald Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995). Design Patterns: Elements of Reusable Object-Oriented Software. Reading, Massachusetts: Addison Wesley Longman, Inc.. http://www.McDonaldLand.info