Anonymous Functions and Design Patterns

14
Anonymous Functions and Design Patterns When Yin Finally Meets Yang

description

Learn how to integrate anonymous functions/closures with design patterns.

Transcript of Anonymous Functions and Design Patterns

Page 1: Anonymous Functions and Design Patterns

Anonymous Functions and Design Patterns

When Yin Finally Meets Yang

Page 2: Anonymous Functions and Design Patterns

OverviewObjective

Learn how to use the closures/anonymous functions with the design patterns

Requirements

Knowledge of the adapter design pattern

Knowledge of the observer design pattern

Knowledge of the intercepting filter design pattern

Estimated Time

12 minutes

www.prodigyview.com

Page 3: Anonymous Functions and Design Patterns

Follow Along With A 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/ClosureDesigns.php

Page 4: Anonymous Functions and Design Patterns

Why ClosuresIn our previous examples, we implemented the intercepting filters, observers and adapter design patterns by calling other classes.

That can be overkill

To make things a little faster and easier to write, we can implement these same design patterns by having them call anonymous functions.

Page 5: Anonymous Functions and Design Patterns

Our ClassWe are starting this example by creating a class with the 3 design patterns implemented.

Extend PVStaticObject Implemented the adapter design pattern

Implement Filters Implement Observer

Page 6: Anonymous Functions and Design Patterns

Results

Very plain and basic, none of the filters or observers had any affect. Time to make this method a little bit sexier.

We have the design patterns implemented, so lets run the method once and see what result we get without using any of the patterns.

Page 7: Anonymous Functions and Design Patterns

Arguments Filter

Now let’s add a filter to the arguments that are initially coming in. Filters with closures are just like regular filters except we have to add the option ‘type’ as a closure.

Define the closure Set the class to filter Set the method to filter

Add the closure Set the type to ‘closure’ Executes on this event

Page 8: Anonymous Functions and Design Patterns

Arguments Filter Part 2Next we are going to take adding the anonymous function to the next level. Before we defined the function in a variable and passed it the method. Lets start adding the function directly into the method.

Class to Add Filter Method to add filter to

Create the anonymous function by passing it as the parameter

Give the filter a name

The type as ‘closure’ Add an event

Page 9: Anonymous Functions and Design Patterns

Add the ObserverSimilar to how we added the anonymous function in the filter, we are going to add the anonymous function to the observer.

Set the name of the event Make up a name for the anonymous function

Create the anonymous functionSet the options type to closure

Page 10: Anonymous Functions and Design Patterns

ResultsBefore we add the adapter design pattern, we are going to test the output when we run the method with the filters and observers.

We a little magic, we’ve made our output a little bit livelier.

Page 11: Anonymous Functions and Design Patterns

Adapter and ClosureFor our final design pattern, we are going to completely override the method by using an adapter and a closure.

The class to add the adapter too The method to assign the adapter too

The anonymous function in place of the parameter

Set the option ‘type’ to ‘closure’

Page 12: Anonymous Functions and Design Patterns

ResultsRemember from our other examples, adding the adapter will completely override the method. This means the execution of the code will never reach other design patterns. The result of adding the adapter will give us this:

Page 13: Anonymous Functions and Design Patterns

Challenge!This is an optional challenge designed to give you a better understanding of the design patterns.

1. Look into the source code of the file PVFileManager in the core/util/PVFileManager.php.

2. Find the method for writing a file. Notice how it contains the ability to use adapters, filters and observers.

3. First apply filters and observers using anonymous functions to the method.

4. Then apply an adapter using an anonymous function and write the file out yourself.

Page 14: Anonymous Functions and Design Patterns

API ReferenceFor a better understanding of the Design Patterns,

check out the api at the two links below.

PVStaticPatterns

PVPatterns

www.prodigyview.com

More Tutorials

For more tutorials, please visit:

http://www.prodigyview.com/tutorials