抽象产品类
package {
//cake是抽象类
public class Cake {
protected var _name:String;
public function Cake() {
}
internal function prepare():void {
trace("Preparing " + name);
}
internal function bake():void {
trace("Baking " + name);
}
internal function box():void {
trace("Boxing " + name);
}
public function get name():String {
return _name;
}
}
}
package {
public class StrawberryCake extends Cake {
public function StrawberryCake() {
_name = "strawberry cake";
}
}
}
具体产品类
package {
public class ChocolateCake extends Cake {
public function ChocolateCake() {
_name = "chocolate cake";
}
}
}
具体产品类
package {
public class CreamCake extends Cake {
public function CreamCake() {
_name = "cream cake";
}
}
}
简单工厂
package {
public class SimpleCakeFactory {
public function SimpleCakeFactory() {
}
public function createCake(type:String):Cake {
var cake:Cake;
if(type == "chocolateCake") {
cake = new ChocolateCake();
}else if(type == "creamCake") {
cake = new CreamCake();
}else if(type == "strawberryCake") {
cake = new StrawberryCake();
}
return cake;
}
}
}
客户
package {
public class CakeShop {
private var factory:SimpleCakeFactory;
public function CakeShop(factory:SimpleCakeFactory) {
this.factory = factory;
}
public function orderCake(type:String):Cake {
var cake:Cake = factory.createCake(type);
cake.prepare();
cake.bake();
cake.box();
return cake;
}
}
}
测试类
package {
import flash.display.Sprite;
public class SimpleFactoryTest extends Sprite {
public function SimpleFactoryTest() {
var factory:SimpleCakeFactory = new SimpleCakeFactory();
var cakeShop:CakeShop = new CakeShop(factory);
var cake:Cake = cakeShop.orderCake("chocolateCake");
trace("We ordered a " + cake.name);
cake = cakeShop.orderCake("creamCake");
trace("We ordered a " + cake.name);
}
}
}