[设计模式as3版]四.简单工厂
发布时间:2020-12-15 18:04:18 所属栏目:百科 来源:网络整理
导读:抽象产品类 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 functio
抽象产品类 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); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |