Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3245227
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类:

2010-09-27 12:02:06

功能解析
    这个类是Observer基类的子类,添加了变量_handler和_source

测试解析
功能:当观察对象变化时,函数处理器返回默认参数
        public function whenSourceChangesHandlerSendsArgumentsAsDefault():void
        {
            var hasChangeDetected:Boolean;

            var observe:Observe = new Observe();
            //指定函数处理器
            observe.handler = function(parameter:String):void{
                hasChangeDetected = true;
                //arguments[0]的值就是source
                assertThat(arguments[0], equalTo("a change"));
            }
            //注意,赋值后,才会调用handler处理器,source作为handler函数的参数
            observe.source = "a change";

            Assert.assertTrue(hasChangeDetected);
        }


代码解析
package com.adobe.cairngorm.observer
{
    public class Observe extends Observer
    {
        //函数处理器
        private var _handler:Function;

        //观察对象
        private var _source:Object;

        //构造函数
        public function Observe(){
            //为什么构造函数就设置handler是带参数的
            sendArgumentsToHandler = true;
        }

        //函数处理器的get方法
        override public function get handler():Function{
            return _handler;
        }

        //设置函数处理器
        public function set handler(value:Function):void{
            _handler = value;
            if (value != null)
            {
                //如果存在函数处理器,则设置isHandlerInitialized 为真
                isHandlerInitialized = true;
                if (isHandlerInitialized && isSourceInitialized)
                {
                    callHandler();
                }
            }
        }

        //观察对象的get方法
        override public function get source():Object
        {
            return _source;
        }

        //设置观察对象
        public function set source(value:Object):void
        {
            _source = value;

            //如果存在观察对象,isSourceInitialized 为真
            isSourceInitialized = true;
            if (isHandlerInitialized && isSourceInitialized)
            {
                callHandler();
            }
        }
    }
}
阅读(1108) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~