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
{