SlideShare una empresa de Scribd logo
1 de 17
Observer Design Pattern
Overview
Objective

Learn how to use the observer design pattern.

Requirements

 Basics of ProdigyView
Estimated Time

8 minutes




                     www.prodigyview.com
Follow Along With Code
           Example
1. Download a copy of the example code at
  www.prodigyview.com/source.

2. Install the system in an environment you feel
  comfortable testing in.

3. Proceed to examples/design/Observers.php
What Are Observers
Observers are a design pattern, most commonly used in
event driven programming, where an object has a list of
observers and the observers are notified of a state
change.

A simpler explanation would be when a function is
executed, a list of other functions is automatically
executed.
Observers Visual
MyObject::doSomething




  Method doSomething
executes. Notify observers
execution has taken place.




         Output
PVPatterns and
               PVStaticPatterns
The classes that contain the methods for using observers is the
PVPatterns and PVStaticPatterns classes.

PVPatterns is for instances and PVStaticPatterns is for static
methods.

Both PVObject and PVStaticObject extend the pattern classes.
Let's Begin
    In our example, we are going to pretend you want to
    integrate a function with social media. So lets start by
    making two social media classes. Keep note that in our
    example, one of our classes has a static method.
The argument passed from the method observed
Messenger Object
        Now we are going create a class that has the ability to
        send messages to objects that are observing this method.

                                                                  Extends PVObject
Implements the ability to call observers




The name of the event that observrs look for   Value passed to objects that are observing
Take Notice!
1. Our class extends PVObject. PVObject extends
  PVPatterns which has our methods needed to use the
  observer. The method that will notify other methods
  than an action has occurred is _notify().
2. The method notify has the parameter 'new_message'.
  This is the name of the event that is going to cause the
  notifications. After the event name, we can add as many
  parameters as we want but in this example we are only
  adding one, the message.
Round 1
The first test we are going to do is just sending a message
without adding an observer. So lets initialize the object
and send a message.
Result
The result here will be very simple.
Round 2
Now lets attach our observers. At minimum, the observer
requires 3 arguments. The first argument is the name of the
event. Our event name has to match to event name set in
the notifier, which is 'new_message'. The second argument
is the class to be called and the third is the method in the
class to be called when the event is executed The last is
options, namely for if our method is not static, apply the
'instance’ option here.

Code example on next slide =>
Attach the Observers
                                                        Call an instance of
Event Name    Class to call   Method in class to call   an object




Event Name    Class to call   Method in class to call
And the output….
Challenge!
Below is an optional challenge to perform that is designed to help you
gain a better understanding of the design pattern.

1. Look through ProdigyView’s source code and find the PVSession
    class.

2. Find the event name for either writing a session or writing a
    cookie.

3. Create a class that accepts the same parameters that the method
    in the Session class outputs.

4. Add that class as an observer to PVSession:writeCookie() or
    PVSession::writeMethod

5. Execute PVSession:writeCookie() or PVSession::writeMethod
    and print out the results in the class you created.
Summary
1. Add _notify to a function and set the event name. Add
  as many parameters as you need after the event name.
  Parameters will be passed to the functions that’s are
  listening.

2. Attach an observer with _addObserver. Make sure to
  specify the name of the event, the class and method the
  even will be calling.
API Reference
For a better understanding of the Collections and the
Iterator, check out the api at the two links below.

PVStaticPatterns

PVPatterns



                     More Tutorials
For more tutorials, please visit:
http://www.prodigyview.com/tutorials



                         www.prodigyview.com

Más contenido relacionado

Destacado

Design patterns
Design patternsDesign patterns
Design patterns
ISsoft
 
Observer & singleton pattern
Observer  & singleton patternObserver  & singleton pattern
Observer & singleton pattern
babak danyal
 
Observer Pattern Khali Young 2006 Aug
Observer Pattern Khali Young 2006 AugObserver Pattern Khali Young 2006 Aug
Observer Pattern Khali Young 2006 Aug
melbournepatterns
 
Design patterns 4 - observer pattern
Design patterns   4 - observer patternDesign patterns   4 - observer pattern
Design patterns 4 - observer pattern
pixelblend
 
Colombo Architecture Meetup - Enterprise Architectural Challenges in Large En...
Colombo Architecture Meetup - Enterprise Architectural Challenges in Large En...Colombo Architecture Meetup - Enterprise Architectural Challenges in Large En...
Colombo Architecture Meetup - Enterprise Architectural Challenges in Large En...
Crishantha Nanayakkara
 

Destacado (20)

Design patterns
Design patternsDesign patterns
Design patterns
 
The Observer Pattern (Definition using UML)
The Observer Pattern (Definition using UML)The Observer Pattern (Definition using UML)
The Observer Pattern (Definition using UML)
 
Observer & singleton pattern
Observer  & singleton patternObserver  & singleton pattern
Observer & singleton pattern
 
Observer pattern
Observer patternObserver pattern
Observer pattern
 
Observer Pattern Khali Young 2006 Aug
Observer Pattern Khali Young 2006 AugObserver Pattern Khali Young 2006 Aug
Observer Pattern Khali Young 2006 Aug
 
Design patterns 4 - observer pattern
Design patterns   4 - observer patternDesign patterns   4 - observer pattern
Design patterns 4 - observer pattern
 
Design patterns: observer pattern
Design patterns: observer patternDesign patterns: observer pattern
Design patterns: observer pattern
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Observer pattern
Observer patternObserver pattern
Observer pattern
 
Factory Pattern
Factory PatternFactory Pattern
Factory Pattern
 
Design Patterns in Cocoa Touch
Design Patterns in Cocoa TouchDesign Patterns in Cocoa Touch
Design Patterns in Cocoa Touch
 
Reflective portfolio
Reflective portfolioReflective portfolio
Reflective portfolio
 
Design Pattern - Observer Pattern
Design Pattern - Observer PatternDesign Pattern - Observer Pattern
Design Pattern - Observer Pattern
 
Design pattern - Software Engineering
Design pattern - Software EngineeringDesign pattern - Software Engineering
Design pattern - Software Engineering
 
Observer and Decorator Pattern
Observer and Decorator PatternObserver and Decorator Pattern
Observer and Decorator Pattern
 
Colombo Architecture Meetup - Enterprise Architectural Challenges in Large En...
Colombo Architecture Meetup - Enterprise Architectural Challenges in Large En...Colombo Architecture Meetup - Enterprise Architectural Challenges in Large En...
Colombo Architecture Meetup - Enterprise Architectural Challenges in Large En...
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
ICTA Technology Meetup 06 - Enterprise Application Design Patterns
ICTA Technology Meetup 06 - Enterprise Application Design PatternsICTA Technology Meetup 06 - Enterprise Application Design Patterns
ICTA Technology Meetup 06 - Enterprise Application Design Patterns
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Object-oriented design patterns in UML [Software Modeling] [Computer Science...
Object-oriented design patterns  in UML [Software Modeling] [Computer Science...Object-oriented design patterns  in UML [Software Modeling] [Computer Science...
Object-oriented design patterns in UML [Software Modeling] [Computer Science...
 

Más de ProdigyView

Más de ProdigyView (20)

Installing Plug-ins
Installing Plug-insInstalling Plug-ins
Installing Plug-ins
 
Building An Application
Building An ApplicationBuilding An Application
Building An Application
 
Installing Applications
Installing ApplicationsInstalling Applications
Installing Applications
 
Video Content Management
Video Content ManagementVideo Content Management
Video Content Management
 
Audio Content Management
Audio Content ManagementAudio Content Management
Audio Content Management
 
File Content Management
File Content ManagementFile Content Management
File Content Management
 
Email Configuration
Email ConfigurationEmail Configuration
Email Configuration
 
HTML5 Tags and Elements Tutorial
HTML5 Tags and Elements TutorialHTML5 Tags and Elements Tutorial
HTML5 Tags and Elements Tutorial
 
HTML Forms Tutorial
HTML Forms TutorialHTML Forms Tutorial
HTML Forms Tutorial
 
Html Tags Tutorial
Html Tags TutorialHtml Tags Tutorial
Html Tags Tutorial
 
Video Conversion PHP
Video Conversion PHPVideo Conversion PHP
Video Conversion PHP
 
Sending Email Basics PHP
Sending Email Basics PHPSending Email Basics PHP
Sending Email Basics PHP
 
Tools ProdigyView
Tools ProdigyViewTools ProdigyView
Tools ProdigyView
 
Custom Validation PHP
Custom Validation PHPCustom Validation PHP
Custom Validation PHP
 
Basic File Cache Tutorial - PHP
Basic File Cache Tutorial - PHPBasic File Cache Tutorial - PHP
Basic File Cache Tutorial - PHP
 
Understanding Web Cache
Understanding Web CacheUnderstanding Web Cache
Understanding Web Cache
 
Javascript And CSS Libraries
Javascript And CSS LibrariesJavascript And CSS Libraries
Javascript And CSS Libraries
 
PHP Libraries
PHP LibrariesPHP Libraries
PHP Libraries
 
SQL Prepared Statements Tutorial
SQL Prepared Statements TutorialSQL Prepared Statements Tutorial
SQL Prepared Statements Tutorial
 
Database Basics
Database BasicsDatabase Basics
Database Basics
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

Tutorial On The Observer Design Pattern

  • 2. Overview Objective Learn how to use the observer design pattern. Requirements  Basics of ProdigyView Estimated Time 8 minutes www.prodigyview.com
  • 3. Follow Along With Code Example 1. Download a copy of the example code at www.prodigyview.com/source. 2. Install the system in an environment you feel comfortable testing in. 3. Proceed to examples/design/Observers.php
  • 4. What Are Observers Observers are a design pattern, most commonly used in event driven programming, where an object has a list of observers and the observers are notified of a state change. A simpler explanation would be when a function is executed, a list of other functions is automatically executed.
  • 5. Observers Visual MyObject::doSomething Method doSomething executes. Notify observers execution has taken place. Output
  • 6. PVPatterns and PVStaticPatterns The classes that contain the methods for using observers is the PVPatterns and PVStaticPatterns classes. PVPatterns is for instances and PVStaticPatterns is for static methods. Both PVObject and PVStaticObject extend the pattern classes.
  • 7. Let's Begin In our example, we are going to pretend you want to integrate a function with social media. So lets start by making two social media classes. Keep note that in our example, one of our classes has a static method. The argument passed from the method observed
  • 8. Messenger Object Now we are going create a class that has the ability to send messages to objects that are observing this method. Extends PVObject Implements the ability to call observers The name of the event that observrs look for Value passed to objects that are observing
  • 9. Take Notice! 1. Our class extends PVObject. PVObject extends PVPatterns which has our methods needed to use the observer. The method that will notify other methods than an action has occurred is _notify(). 2. The method notify has the parameter 'new_message'. This is the name of the event that is going to cause the notifications. After the event name, we can add as many parameters as we want but in this example we are only adding one, the message.
  • 10. Round 1 The first test we are going to do is just sending a message without adding an observer. So lets initialize the object and send a message.
  • 11. Result The result here will be very simple.
  • 12. Round 2 Now lets attach our observers. At minimum, the observer requires 3 arguments. The first argument is the name of the event. Our event name has to match to event name set in the notifier, which is 'new_message'. The second argument is the class to be called and the third is the method in the class to be called when the event is executed The last is options, namely for if our method is not static, apply the 'instance’ option here. Code example on next slide =>
  • 13. Attach the Observers Call an instance of Event Name Class to call Method in class to call an object Event Name Class to call Method in class to call
  • 15. Challenge! Below is an optional challenge to perform that is designed to help you gain a better understanding of the design pattern. 1. Look through ProdigyView’s source code and find the PVSession class. 2. Find the event name for either writing a session or writing a cookie. 3. Create a class that accepts the same parameters that the method in the Session class outputs. 4. Add that class as an observer to PVSession:writeCookie() or PVSession::writeMethod 5. Execute PVSession:writeCookie() or PVSession::writeMethod and print out the results in the class you created.
  • 16. Summary 1. Add _notify to a function and set the event name. Add as many parameters as you need after the event name. Parameters will be passed to the functions that’s are listening. 2. Attach an observer with _addObserver. Make sure to specify the name of the event, the class and method the even will be calling.
  • 17. API Reference For a better understanding of the Collections and the Iterator, check out the api at the two links below. PVStaticPatterns PVPatterns More Tutorials For more tutorials, please visit: http://www.prodigyview.com/tutorials www.prodigyview.com