flex 3 cookbook 翻译一节:定义和使用接口

     由于水平不高,有问题请见谅.

                  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">

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值