ActionScript 3.0 Design Patterns

(Chris Devlin) #1
Favor Composition | 53

Examples 1-45 though 1-54 make up the application. Save all the.asfiles in the


same folder. It represents a typical use of composition.


Example 1-45. Media.as


package
{
//Abstract class
class Media
{
//Composition: Reference to two interfaces
var playMedia:PlayMedia;
var recordMedia:RecordMedia;


public function Media( ) {}


public function doPlayMedia( ):void
{
//Delegates to PlayMedia
playMedia.playNow( );
}
public function doRecordMedia( ):void
{
//Delegates to RecordMedia
recordMedia.recordNow( );
}
}
}


Example 1-46. VideoFlash.as


package
{
//Concrete Media subclass: Video
class VideoFlash extends Media
{
public function VideoFlash( )
{
//Inherits composition references from superclass
playMedia = new PlayVideo( );
recordMedia = new RecordVideo( );
}
}
}


Example 1-47. Mp3.as


package
{
//Concrete Media subclass: Audio
public class Mp3 extends Media
{

Free download pdf