由于水平不高,有问题请见谅.
Recipe 1.18. Define and Implement an Interface
秘决 1.18 定义和使用接口
Recipe 1.18.1. Problem
秘决 1.18.1 问题
你需要创建一个然后创建一个组件去执行这个接口.
Recipe 1.18.2. Solution
秘决 1.18.2.解决方法
新建一个ActionScript文件,声名为一个接口,并定义接口需要的任意方法.要让接口生效,在对需使用接口的组件进行类定义时使用implements关键词.
Recipe 1.18.3. Discussion
秘决1.18.3.讨论
接口是很有用处的工具,能让你写下一个对象(object)必须履行的契约:这个接口必须包含一个详细的方法设置,有确定的范围,名称,参数和返回类型.组件使用对象时,会希望方法的设置是present(存在的?),这样让你创建对类的轻微的描述,而你实际上没有创建新的类让你的继承谱变得零乱.运行接口的类被看作是那种接口的类型.这样能用作为设置方法的参数类型,或者设置返回类型,如下所示:
public function pay(payment:IPaymentType):IReceipt
这种方法能接受任何的对象去运行IPaymentType,并且返回一个运行IReceipt interface的对象.
接口不能定义方法体,也不能定义任何的变量,在下面的代码中,IDataInterface定义和声名了5种方法,任何对象运行此接口,这些方法都生效.
package oreilly.cookbook { public interface IDataInterface { function set dataType(value:Object):void; function get dataType():Object; function update():Boolean; function write():Boolean; function readData():Object; } }
要运行此接口.声名此类并加上implements标记.所有在接口中定义的方法必须运行在类中.
在下面的代码中.前面接口中所有的方法都包含要内,并且给出了函数体.
package oreilly.cookbook { import flash.events.EventDispatcher; import flash.events.IEventDispatcher; public class ClientData extends EventDispatcher implements IDataInterface { private var _dataType:Object; public function ClientData(target:IEventDispatcher=null) { super(target); } public function set dataType(value:Object):void { _dataType = value; } public function get dataType():Object { return _dataType; } public function update():Boolean { //do the actual updating var updateSuccessful:Boolean; if(updateSuccessful) { return true; } else { return false; } } public function write():Boolean { var writeSuccess:Boolean; if(writeSuccess) { return true; } else { return false; } } public function readData():Object { var data:Object; //get all the data we need return data; } } }
要在MXML中运行一个接口,在开始的标签中给组件使用implements.例如:
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300"
implements= "IDataInterface">