actionscript3设计模式,工厂方法,好东东

mac2022-06-30  95

最近啃完了一本《ActionScript3设计模式》的书,感觉非常不错,思路通了好多。猛一想我正在搞的这个Game,……还有好多理念还没用上呢。不过面对一个已经开发了30%的东东,要说搞模式……我受不了了,看来那本书的实践只能留到我的下一个flash项目。今天在网上居然找到了这本书的一章,感觉蛮好的,贴出来共享一下。先前的模板方法实例中,createField()方法并无任何返回信息,它只是用于表达“创建足球场地”。下面我们来更新其嗲吗,让它可以创建并返回一个field对象。而不同的游戏拥有不同的场地类型,因而我们要创建一个 IField 接口用于实现所有的场地类。接口中定义了一个唯一方法: drawField() //创建场地方法package com{        public interface IField{                function drawField():void; //创建场地            }}接下来,我们创建FootBallField类,它实现了IField接口。为了保持示例简洁,我们并不会绘制足球场地,不过您可以自己绘制。FootBallField类定义如下:package com{        //足球场地        public class FootBallField implements IField{                public function drawField():void{            trace("创建足球场地")        }            }}工厂方法的目的就是连接两个或者多个不同但却相关联的类级别。下图展示类级别。

现在我们重新创建AbstractGame类中的createField()和initialize()方法以显示IField对象的存在。我们的createField()方法是一个工厂方法,它返回一个实现IField接口的对象。下面,我们让initialize()方法在IField对象上调用drawField()方法。如下所示:package com{        //此类属抽象类        public class AbstractGame {                public final function initialize(){                        var field:IField = createField();            field.drawField();                        createTeam("red");            createTeam("blue");            startGame();        }                public function createField():IField{            throw new Error("抽象类方法")        }                public function createTeam(name:String){            throw new Error("抽象类方法")        }                public function startGame(){            throw new Error("抽象类方法")        }            }}该抽象类和模板算法都是完全匿名的,并且创建的具体对象都交由子类控制。下面重新FootBallGame类来创建并且返回一个FootBallField对象:package com{        public class FootBallGame extends AbstractGame{                public override function createField():IField{            return new FootBallField();        }                public override function createTeam(name:String){            trace("创建 Team:" + name)        }                public override function startGame(){            trace("游戏开始")        }            }    }Tags - 工厂方法 , 设计模式 , actcionscript3

转载于:https://www.cnblogs.com/pelephone/articles/flash-actionscript-design-factory.html

相关资源:Konva基础文档
最新回复(0)