-
Book Overview & Buying
-
Table Of Contents
Mastering PHP Design Patterns
By :
Imagine an audio system consisting of individual songs and also playlists of songs. Yes, playlists consist of songs, but we want both to be treated individually. Both are types of music, both can be played.
The Composite design pattern can help here; it allows us to ignore the differences between compositions of objects and individual objects. It allows us to treat both with identical or nearly-identical code.
Let's put together a little example; a song is our example of a leaf, with playlists being composites. Music is our abstraction of playlists and songs; therefore, we can call this our component. The client of all this is our index.php file.
By not discriminating between leaf-nodes and branches, our code becomes less complex and therefore less error prone.
Let's start by defining an interface for our Music:
<?php
interface Music
{
public function play();
}
Now let's put together some implementations, starting with our Song class:
<?php...