[设计模式as3版]五.工厂方法
发布时间:2020-12-15 18:04:04 所属栏目:百科 来源:网络整理
导读: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():voi
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 CakeShop { public function CakeShop() { } public function orderCake(type:String):Cake { var cake:Cake = createCake(type); cake.prepare(); cake.bake(); cake.box(); return cake; } //工厂方法 protected function createCake(type:String):Cake { return null; } } } package { public class ShanghaiCreamCake extends Cake { public function ShanghaiCreamCake() { _name = "Shanghai cream cake"; } } } package { public class ShanghaiChocolateCake extends Cake { public function ShanghaiChocolateCake() { _name = "Shanghai chocolate cake"; } } } package { public class ShanghaiStrawberryCake extends Cake { public function ShanghaiStrawberryCake() { _name = "Shanghai strawberry cake"; } } } package { public class BeijingStrawberryCake extends Cake { public function BeijingStrawberryCake() { _name = "Beijing strawberry cake"; } } } package { public class BeijingCreamCake extends Cake { public function BeijingCreamCake() { _name = "Beijing cream cake"; } } } package { public class BeijingChocolateCake extends Cake { public function BeijingChocolateCake() { _name = "Beijing chocolate cake"; } } } package { public class ShanghaiCakeShop extends CakeShop { public function ShanghaiCakeShop() { } //工厂方法 override protected function createCake(type:String):Cake { var cake:Cake; if(type == "chocolateCake") { cake = new ShanghaiChocolateCake(); }else if(type == "creamCake") { cake = new ShanghaiCreamCake(); }else if(type == "strawberryCake") { cake = new ShanghaiStrawberryCake(); } return cake; } } } package { public class BeijingCakeShop extends CakeShop { public function BeijingCakeShop() { } override protected function createCake(type:String):Cake { var cake:Cake; if(type == "chocolateCake") { cake = new BeijingChocolateCake(); }else if(type == "creamCake") { cake = new BeijingCreamCake(); }else if(type == "strawberryCake") { cake = new BeijingStrawberryCake(); } return cake; } } } package { import flash.display.Sprite; public class FactoryMethodTest extends Sprite { public function FactoryMethodTest() { var cakeShop:CakeShop = new BeijingCakeShop(); var cake:Cake = cakeShop.orderCake("chocolateCake"); trace("We ordered a " + cake.name); cake = cakeShop.orderCake("creamCake"); trace("We ordered a " + cake.name); cake = cakeShop.orderCake("strawberryCake"); trace("We ordered a " + cake.name); trace(); cakeShop = new ShanghaiCakeShop(); cake = cakeShop.orderCake("chocolateCake"); trace("We ordered a " + cake.name); cake = cakeShop.orderCake("creamCake"); trace("We ordered a " + cake.name); cake = cakeShop.orderCake("strawberryCake"); trace("We ordered a " + cake.name); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |