【技巧】类设计策略[转]

      Flex和AIR 2007-11-16 22:28

      最近有空,于是继续我的学习之旅。今天打算继续学习AS3,像以往一样到google上漫游。找了好一阵子后,发觉还不如继续熟读官方的帮助教程。官方的帮助教程是最好的教程,但有些地方我平时并没有注意到的。今天就是有空,哈哈,把之前没有留意到的也看了看,发现了这篇好文章,把原文转过来了,希望高手们看后给些关于这方面的意见和建议,毕竟光会用各个类也没用,懂得设计类才是硬道理。

类设计策略

      面向对象的设计这一主题较为复杂;整个行业的人员都对此学科进行了大量的学术研究和专业实践。尽管如此,下面还是给出了几条建议以帮助您着手进行面向对象的编程。

  1. 请考虑一下该类的实例将在应用程序中扮演的角色。通常,对象担任以下三种角色之一:
    • 值对象:这些对象主要用作数据的容器 ─ 也就是说,它们可能拥有若干个属性和很少的几个方法(有时没有方法)。值对象通常是明确定义的项目的代码表示,例如音乐播放器应用程序中的 Song 类(表示单个实际的歌曲)或 Playlist 类(表示概念上的一组歌曲)。
    • 显示对象:它们是实际显示在屏幕上的对象。例如,用户界面元素(如下拉列表或状态显示)和图形元素(如视频游戏中的角色)等等就是显示对象。
    • 应用程序结构:这些对象在应用程序执行的逻辑或处理方面扮演着广泛的支持角色。例如,在仿生学中执行某些计算的对象;在音乐播放器应用程序中负责刻度盘控件与音量显示之间的值同步的对象;管理视频游戏中的规则的对象;或者在绘画应用程序中加载保存的图片的对象。
  2. 确定类所需的特定功能。不同类型的功能通常会成为类的方法。
  3. 如果打算将类用作值对象,请确定实例将要包含的数据。这些项是很好的候选属性。
  4. 由于类是专门为项目而设计的,因此最重要的是提供应用程序所需的功能。回答下列问题可能会对您很有帮助:
    • 应用程序将存储、跟踪和处理哪些信息?确定这些信息有助于您识别可能需要的值对象和属性。
    • 需要执行哪些操作 ─ 例如,在应用程序首次加载时,在单击特定的按钮时,在影片停止播放时,分别需要执行哪些操作?这些是很好的候选方法(如果"动作"仅涉及更改单个值,则是很好的候选属性)。
    • 对于任何给定的动作,要执行该动作,该类需要了解哪些信息?这些信息将成为方法的参数。
    • 随着应用程序开始工作,应用程序的其它部分需要了解类中的哪些内容将发生更改?这些是很好的候选事件。
  5. 如果有一个现有的对象与您需要的对象类似,只是缺少某些您需要添加的一些额外功能,应考虑创建一个子类(在现有类的功能的基础之上构建的类,不需要定义它自己的所有功能)。例如,如果您希望创建一个将作为屏幕上的可视对象的类,可将一个现有显示对象(如 Sprite 或 MovieClip)的行为用作该类的基础。在这种情况下,MovieClip(或 Sprite)是"基类",而您的类是该类的扩展。

 

有关组织类的一些建议

      与早期的 ActionScript 版本不同,ActionScript 3.0 没有一个文件对应一个类的限制,即不限制每个文件只能使用一个类。使用 ActionScript 3.0,您可以将多个类的源代码保存到单个 .as 文件中。在某些情况下,将多个类包装到单个源文件中可能看似比较方便,但通常而言,这被认为是不好的编程习惯,原因有二:

  • 如果将多个类包装到一个大文件中,则重用每个类将非常困难。
  • 当文件名与类名不对应时,找到特定类的源代码将非常困难。

由于以上原因,Adobe 建议您始终将每个类的源代码保存在其自己的文件中,并为文件指定与类相同的名称。



标签集:TAGS:类设计 开发技艺 Flex
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}