ActionScript 3.0 Design Patterns

(Chris Devlin) #1
Example: Print Shop | 77

Example 2-12 and Example 2-13 show the LowVolPrintCenter and


HighVolPrintCenterclasses that extend the PrintCenter class, and override and


implement thecreatePrintjob( ) factory method.


{

public function print(fn:String):void
{
var printjob:IPrintjob = this.createPrintjob( );
printjob.start(fn);
}


// ABSTRACT Method (must be overridden in a subclass)
protected function createPrintjob( ):IPrintjob
{
throw new IllegalOperationError("Abstract method:
must be overridden in a subclass");
return null;
}
}
}


Example 2-12. LowVolPrintCenter.as


package printcenters
{
public class LowVolPrintCenter extends PrintCenter
{
override protected function createPrintjob( ):IPrintjob
{
trace("Creating new printjob for the inkjet printer");
return new InkjetPrintjob( );
}
}
}


Example 2-13. HighVolPrintCenter.as


package printcenters
{
public class HighVolPrintCenter extends PrintCenter
{
override protected function createPrintjob( ):IPrintjob
{
trace("Creating new printjob for the workgropup printer");
return new WorkgroupPrintjob( );
}
}
}


Example 2-11. PrintCenter.as (continued)

Free download pdf