WEB开发网
开发学院图形图像Flash Think in ActionScript 3.0Ⅱ 阅读

Think in ActionScript 3.0Ⅱ

 2009-05-30 12:08:03 来源:WEB开发网   
核心提示: 使用接口实现多态,和前面通过继承实现多态几乎是相同的,Think in ActionScript 3.0Ⅱ(10),只不过这次是把父类引用改成了接口类型的引用,实现了同一接口的类的对象表示它们都具有这一项相同的能力,下面请出策略模式,6.7 策略模式(Strategy Pattern)

使用接口实现多态,和前面通过继承实现多态几乎是相同的,只不过这次是把父类引用改成了接口类型的引用。实现了同一接口的类的对象表示它们都具有这一项相同的能力,当我们只关心某些这项能力,而并不关心具体对象的类型时,使用多态可以更好地保证代码的灵活性,这就是向上抽象的作用。下面来解释一下这个例子。

首先,定义三个接口 Runnable(会跑的),Swimmable(会游的),Flyable(会飞的)。让 Cat 类实现Runnable, Swimmable,让 Duck 类实现Runnable, Flyable。实现了某个接口就代表拥有了某项(或几项)技能。Cat 类中除了实现这两个接口之外,它还有自己的 climb() 方法。

在测试类中,创建一个 Cat 类的对象 cat,一个 Dog 类的对象 dog。

接下来,加入一个 Racing(跑步比赛)类的实例,将 cat 传进去,赋给 runner 变量(Runnable 接口类型的引用),Racing 类的 go() 方法中调用了实现了 Runnable 接口的对象,并调用它的 run() 方法,这里就有了多态,动态绑定到实际对象的 run() 方法。

成员变量 runner 是 Runnable 接口类型的,说明我们只关心它是能跑的对象(拥有run() 方法),具体它是怎么跑的我不管,反正你实现了 Runnable 接口,就肯定有 run() 方法,我只要你的 run() 方法,其它的我不管。

注意,在 Runnable 中只定义 run() 方法,对于 runner 来说只能看到 Runnable 接口里定义的方法,在此接口以外的方法一律看不到,如果要让 runner 调用 Cat 对象的 climb() 或 swim() 方法是行不通的,与 5.3 节最后一段说明的道理是一样的。

接口在设计模式中应用广泛,下面请出策略模式。

6.7 策略模式(Strategy Pattern)

同样,不直接给出最终的答案,先看下面这个例子:

上一页  5 6 7 8 9 10 

Tags:Think in ActionScript

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接