class Product
{
private var className:String;
private function Product()
{
}
public function get classname():String
{
return className;
}
}
class Creator
{
private function Creator()
{
}
public function FactoryMethod():Product
{
return;
}
}
class ConcreteProductA extends Product
{
public function ConcreteProductA()
{
className="ConcreteProductA";
}
}
class ConcreteProductB extends Product
{
public function ConcreteProductB()
{
className="ConcreteProductB";
}
}
class ConcreteCreatorA extends Creator
{
public function FactoryMethod():Product
{
return new ConcreteProductA();
}
}
class ConcreteCreatorB extends Creator
{
public function FactoryMethod():Product
{
return new ConcreteProductB();
}
}
var c:Creator = new ConcreteCreatorA();
var p:Product = c.FactoryMethod();
trace("Created " + p.classname);
c = new ConcreteCreatorB();
p = c.FactoryMethod();
trace("Created " + p.classname);