class Product { private var className:String; private function Product() { } public function get classname():String { return className; } } class Creator { //constructor private function Creator() { } // Methods 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 { // Methods public function FactoryMethod():Product { return new ConcreteProductA(); } } class ConcreteCreatorB extends Creator { // Methods public function FactoryMethod():Product { return new ConcreteProductB(); } } //client.fla // FactoryMethod returns ProductA var c:Creator = new ConcreteCreatorA(); var p:Product = c.FactoryMethod(); trace("Created " + p.classname); // FactoryMethod returns ProductB c = new ConcreteCreatorB(); p = c.FactoryMethod(); trace("Created " + p.classname); //output //Created ConcreteProductA //Created ConcreteProductB
FactoryMethod
最新推荐文章于 2024-03-17 15:06:30 发布