80 | Chapter 2: Factory Method Pattern
Extended Example: Color Printing
The print shop has been going gangbusters! The manager decided to add the single
most requested feature at the shop—color printing. We end up purchasing two new
color printers: a color inkjet printer for low volume jobs, and a color laser printer for
high volume printing. Unfortunately, we didn’t think about color printing when first
designing the application. How do we add this feature to our application? It’s a good
thing that we know about parameterized factory methods.
We still have the two print centers for high and low volume printing. However, we
now have to specify a kind of print job. Customers can request a color or black and
white print job that can be high or low volume. To indicate the kind of print job, we
can pass a parameter to theprint( ) method.
New Product Classes
We add two new product classes for the new printers, calledColorInkjetPrintjob
(Example 2-16) andColorLaserPrintjob(Example 2-17). Again, we’re not changing
existing code, but extending the application by implementing to theIPrintjobinter-
face show in Example 2-8.
Example 2-16. ColorInkjetPrintjob.as
package printcenters
{
internal class ColorInkjetPrintjob implements IPrintjob
{
public function start(fn:String):void
{
trace("Printing '" + fn + "' to color laser printer");
}
}
}
Example 2-17. ColorLaserPrintjob.as
package printcenters
{
internal class ColorLaserPrintjob implements IPrintjob
{
public function start(fn:String):void
{
trace("Printing '" + fn + "' to color laser printer");
}
}
}