learn the chain of responsibility design pattern
DESCRIPTION
Learn how to implement chain of responsibility design patternTRANSCRIPT
Chain-Of-Responsibility Design Pattern
OverviewObjective
Learn how to use the Chain Of Responsibility design pattern.
Requirements
Basics of Protected Methods
Basics of Abstract Classes
Estimated Time
6 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/data/Command.php
What is the Chain –Of-Responsibility?
The Chain-of-responsibility is a design pattern that has command objects and processing objects. The command objects iterates through the processing objects and executes on the processing objects that can handle the request.
Translated into English, a method in on object is called and it searches for other objects that can handle the methods request.
In ProdigyView,, the chain-of-responsibility is a little different. An object methods are ran through until the correct method is found and then that method is executed.
Chain-of-Responsibility Visual
Method turnLeft();
Method turnRight();
Method lookUp();
Method lookDown();
Method turnAround()
Call Method lookUp()
Output
Command in ProdigyView
The Chain-of-responsibility is implemented in ProdigyView by extending the PVApplication or PVStaticApplication.
Extend PVApplication
Required abstract function
Command InterpreterSo genius, you have a class that is full of protected methods and no way to access them, how are we going to call them?
Well notice that our class extends PVApplication. PVApplication contains a public method called the commandInterpreter. The first argument will be the name of the method to execute. Any other arguments after that will be passed to the method.
PVApplication is an abstract class and the only method that is required for you to implement is the defaultFunction(). This will execute if no command is found. Let’s run some commands.
Command Interpreter Example
The method that will be called
The arguements passed to the method
Command Interpreter Results
The results from passing those commands should look like this.
The Not So Obvious1. PVApplication extends PVObject which extends
PVPatterns. This means any object that extends PVApplication with has use of all the other design patterns as well the PVObject’s collections.
2. An object that extends PVApplication can be used as a stand alone object or be integrated in ProdigyView’s application system.
Challenge!
This is an optional challenge designed to help you better understand the design pattern.
Create two classes that both have only protected methods and extends PVApplication or PVStaticApplication. Create at least 3 methods in each class.
Start the chain by calling one of the object’s command interpreter, and have each method call the other objects command interpreter until the default function is reached.
Summary1. Have an object extend PVApplication
2. Create methods inside that object. They can be protected or public if they are going to be called by the commandInterpreter().
3. Execute a method inside that object by using the commandInterpeter and having the first argument passed be the name of the method and any other variables behind it will be passed to the called method as arguments.
API ReferenceFor a better understanding of the Collections and the Iterator, check out the api at the two links below.
PVApplication
www.prodigyview.com
More Tutorials
For more tutorials, please visit:
http://www.prodigyview.com/tutorials