OverviewObjectiveLearn how to use the Chain Of Responsibility designpattern.Requirements Basics of Protected Methods Basics of Abstract ClassesEstimated Time6 minutes www.prodigyview.com
Follow Along With Code Example1. 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 hascommand objects and processing objects. The commandobjects iterates through the processing objects and executeson the processing objects that can handle the request.Translated into English, a method in on object is called and itsearches for other objects that can handle the methodsrequest.In ProdigyView,, the chain-of-responsibility is a little different.An object methods are ran through until the correct method isfound and then that method is executed.
Command in ProdigyView The Chain-of-responsibility is implemented in ProdigyView by extending the PVApplication or PVStaticApplication.Extend PVApplicationRequired abstract function
Command InterpreterSo genius, you have a class that is full of protected methodsand 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 thecommandInterpreter. The first argument will be the name ofthe method to execute. Any other arguments after that will bepassed to the method.PVApplication is an abstract class and the only method that isrequired for you to implement is the defaultFunction(). Thiswill execute if no command is found. Let’s run somecommands.
Command Interpreter ExampleThe method that will be called The arguements passed to the method
Command Interpreter ResultsThe results from passing those commands should looklike 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 betterunderstand the design pattern.Create two classes that both have only protected methodsand extends PVApplication or PVStaticApplication. Createat least 3 methods in each class.Start the chain by calling one of the object’s commandinterpreter, and have each method call the other objectscommand interpreter until the default function is reached.
Summary1. Have an object extend PVApplication2. 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 theIterator, check out the api at the two links below.PVApplication More TutorialsFor more tutorials, please visit:http://www.prodigyview.com/tutorials www.prodigyview.com