抽象类(Abstract Classes)
抽象类在工厂和模板方法模式里扮演着重要角色。虽然ActionScript 3.0并没有原生支持它们,但我们依然可以在ActipScript 3.0里套用抽象类和抽象方法的思想。一个抽象类就是一个总被用来继承且永不会直接被实例化的类。它的用途跟接口类相似,但有一个最大的不同之处就是:接口类只定义公有方法的名称而没有具体的执行(就像是只有函数名而没有函数体),但抽象类两者都有。
抽象类使用抽象方法,这些抽象方法没有具体的执行,只用作占位符。在其它语言,例如 C#、Java,你可以使用 abstract 关键字来声明抽象方法,它的子类必须重写这些抽象方法。但在ActionScript 3.0里并没有 abstract 关键字,所以我们得想办法解决此问题。
在ActionScript 3.0里使用抽象类,你必须知道两个特别的关键字:override 和 final。子类必须使用override关键字重写抽象类的方法,方法名称必须相同。使用final关键字来声明那些不被子类重写的方法,在模板方法模式里就用到final关键字了。
模板方法
定义在抽象类里的模板方法包含一些方案,这些方案来用组织抽象方法。请看以下这个抽象类,在initialize()方法里,我们定义 games 初始化的方式:
- package com.peachpit.aas3wdp.factoryexample {
-
- public class AbstractGame {
-
- // 模板函数
- public final function initialize():void {
- createField();
- createTeam("red");
- createTeam("blue");
- startGame();
- }
-
- public function createField():void {
- throw new Error("Abstract Method!");
- }
-
- public function createTeam(name:String):void {
- throw new Error("Abstract Method!");
- }
-
- public function startGame():void {
- throw new Error("Abstract Method!");
- }
- }
-
- }
在上面例子里,initialize() 方法是一个模板函数。它定义了 game 是这样初始化的:首先调用 createField() 方法,然后调用 createTeam() 方法来创建队伍(teams),最后调用 startGame() 方法。然而在这个抽象类里面,这几个函数都没干什么实际的事情。它们是给子类重写的,让子类来决定具体需要做的事情。抽象类都不能被直接实例化,而且抽象类的方法都必须被重写,所以在上面那三个方法里都放置了 throw 语句,这样就可以防止它们被直接调用了。
接下来我们创建一个 FootballGame 类来继承 AbstractGame 类。这个子类重写抽象类的方法,然后在 initialize() 方法里被调。
- package com.peachpit.aas3wdp.factoryexample {
-
- public class FootballGame extends AbstractGame {
-
- public override function createField():void {
- trace("Create Football Field");
- }
-
- public override function createTeam(name:String):void {
- trace("Create Football Team Named " + name);
- }
-
- public override function startGame():void {
- trace("Start Football Game");
- }
-
- }
-
- }
正如你所看见的,FootballGame 类重写了 createField()、createTeam()以及startGame() 方法,使这些方法更适合 football。然而那个 initialize() 方法没有改变。你可以通过这种方式来写一个 BaseballGame和BastketballGame 类。可以像下面代码那样使用 FootballGame 类:
- package com.peachpit.aas3wdp.factoryexample {
-
- import com.peachpit.aas3wdp.factoryexample.FootballGame;
- import flash.display.Sprite;
-
- public class FactoryExample extends Sprite {
-
- public function FactoryExample() {
- // Create an instance of FootballGame
- var game:FootballGame = new FootballGame();
- // Call the template method defined in AbstractGame
- game.initialize();
- }
-
- }
-
- }
执行上面的代码输出如下。你可以看到,重写后的方法会在那个模板函数(initialize())里调用,这个模板函数没有改变。
- Create Football Field
- Create Football Team Named red
- Create Football Team Named blue
- Start Football Game
也许你会疑惑抽象类有什么用,现在你应该明白了一些,这样做的好处,很显然,扩展性强,以后 createField()、createTeam()以及startGame() 内容需要更改,我们只要再创建一个子类就可以,不必修改其他应用代码。
分享到:
相关推荐
### ActionScript 3.0中的单例模式应用详解 #### 一、单例模式简介 在软件工程领域,设计模式是一套被广泛接受的解决特定问题的解决方案模板。其中,“单例模式”是一种常用的创建型设计模式,它保证一个类仅有一...
3. **行为型模式**:这类模式关注对象间的交互和职责分配,例如策略模式、模板方法模式、观察者模式、责任链模式、迭代器模式、命令模式和备忘录模式。策略模式定义了一系列算法,并使它们可以相互替换,让算法独立...
此版本包括支持 Adobe AIR 运行时环境的新 ActionScript 类、方法和属性。 在可能的情况下,特定于 AIR 的新项目都以其名称旁的这个小图标作为标志: 本手册提供了 ActionScript 语言中所支持元素的语法和用法信息...
ActionScript 3.0设计模式
第7章 ActionScript3.0中的日期和时间 第8章 ActionScript3.0异常处理 第3篇 ActionScript3.0可视化编程 第9章 可视化编程基础 第10章 对象交互与事件处理 第11章 ActionScript3.0可视对象 ......
《Flash ActionScript3.0教程示例(从入门到精通)》是一本全面解析ActionScript3.0编程语言在Flash平台上的应用的教程。ActionScript3.0是Adobe Flash Professional中的核心编程语言,用于创建交互式动画、游戏、富...
ActionScript 3.0是Adobe Flash Professional、Flash Player以及Adobe AIR中的主要编程语言,用于创建交互式内容、游戏和富互联网应用程序(RIA)。本教程针对ActionScript 3.0的动画制作进行了深入讲解,旨在帮助...
ActionScript 3.0 是Adobe开发的一种面向对象的编程语言,主要用于创建富互联网应用程序(RIA,Rich Internet Applications),尤其是在Flash平台上。它极大地提升了Flash Player和Adobe AIR应用的性能和功能,使得...
《ActionScript3.0 Game Programming》是一本专为游戏开发者设计的权威教程,中文版的出版使得更多中国读者能够深入理解和掌握ActionScript3.0在游戏开发中的应用。这本书不仅覆盖了ActionScript的基础语法和面向...
ActionScript 3.0 是Adobe开发的一种编程语言,主要用于创建交互式内容,特别是在Flash和Flex平台上。这个“ActionScript 3.0 宝典”很可能是一本全面介绍该语言的教程,适合初学者和有一定经验的开发者。PDF版本...
综上所述,“ACTIONSCRIPT 3.0组件中文版”教程将涵盖这些关键概念,帮助读者掌握ACTIONSCRIPT 3.0组件的使用方法,从而提升在Flash平台上开发互动内容的能力。通过阅读提供的PDF文档,你将能深入了解ACTIONSCRIPT ...
《Foundation ActionScript 3.0 Animation》是一本...《foundation Actionscript3.0 Animation.pdf》这个文件很可能是这本书的电子版,包含完整的章节内容和可能的练习案例,对于自学或者参考来说是非常宝贵的资源。
ActionScript 3.0是Adobe Flash平台的核心编程语言,它在游戏开发领域有着广泛的应用,尤其是在网页游戏和轻量级桌面游戏制作中。本教程旨在为初学者和有一定基础的开发者提供全面的学习路径,通过实例教学和源代码...
ActionScript3.0是Adobe开发的一种面向对象的编程语言,主要用于创建富互联网应用程序(RIA),尤其是在Flash平台上。它是Flash Professional、Flash Builder等工具的核心组成部分,让开发者能够为网页、桌面和移动...
【ActionScript 3.0详解】 ...掌握这些基础知识是成为专业ActionScript开发者的前提,同时也为深入学习ActionScript 3.0的高级特性,如面向对象编程、事件处理、类库和API的使用奠定了坚实的基础。
在"ActionScript 3.0语言和组件参考"中,你可以找到关于ActionScript 3.0的详尽信息,包括语法、类库、方法和属性等。此参考文档通常包含以下几个主要部分: 1. **基础概念**:这部分会介绍ActionScript 3.0的基本...
《ActionScript 3.0 语言和组件参考》概述《ActionScript 3.0 语言参考》是 Flash® Player 和 Adobe AIR™ 应用程序编程接口 (API) 的参考手册。 此版本包括支持 Adobe AIR 运行时环境的新 ActionScript 类、方法...
本书详细地介绍了 actionscript 3.0的基础知识,包括 actionscript 3.0语言、actionscript 3.0对象的操作方法、显示列表的使用、事件模型、加载外部素材、可视化编程以及利用声音和视频增强应用程序等方面的知识,并...