频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

[AS3]观察者模式(基本版)

来源: 作者:kenjor01 出处:巧巧读书 2008-03-19 进入讨论组

今天来介绍一下第二个模式:观察者模式。还是看源代码吧。里面有介绍
详情请点击这里:

源文件下载

//-----------------------------------------------//第一个文件  信息中心的接口
package com.dp.Observer {
    import com.dp.Observer.Booker;    
    /**
     * @author www.kenjor.com
     */
    public interface IMessageCenter {
//订阅 参数为订阅者
        function book(bo : Booker) : void;
        //退订 参数为订阅者
        function unbook(bo : Booker) : void;
        //派遣、发布
        function send() : void;
    }
}
//-----------------------------------------------
//第二个文件 订阅者接口
package com.dp.Observer {
    /**
     * @author www.kenjor.com
     */
    public interface IBooker {
        //我的信箱,邮递员投递信息的邮箱,他把信息扔到你的”updata”这个信箱里。
        function update(str : String) : void;
        
    }
}
//------------------------------------------------
//第三个文件 订阅者
package com.dp.Observer {
    import com.dp.Observer.IBooker;
    
    /**
     * @author www.kenjor.com
     */
    public class Booker implements IBooker {
        //订阅者的用户名
        private var _name:String;
        public function Booker(name:String){
            //初始化时候定义用户名
            _name=name;
        }
        public function update(str : String) : void {
            //str为收到的信息
            trace(_name+"收到消息:"+str);
        }
    }
}
//-----------------------------------------------
//第四个文件 信息发布中心
package com.dp.Observer {
    import com.dp.Observer.IMessageCenter;
    /**
     * @author www.kenjor.com
     */
    public class MessageCenter implements IMessageCenter {
        private var mess : String = new String("message  from messageCenter");
        private  var bookers_arr : Array = new Array();
        public function MessageCenter() {
        }
                    //订阅
        public function book(bo : Booker) : void {
                                  //如果在订阅者群体(bookers_arr)中不存这个订阅者(bo),就把这个订阅
                                 //者加入到订阅者群体中
                                               if (bookers_arr.indexOf(bo) < 0) {
                bookers_arr.push(bo);
            }
            ;
        }
                    //退订
        public function unbook(bo : Booker) : void {
            //在订阅者群体中找到这个订阅者,然后帮他办理退订业务
            var b_index : int = bookers_arr.indexOf(bo);
            if(b_index >= 0) {
                bookers_arr.splice(b_index, 1);
            }
        }
        public function send() : void {
            //给订阅者群体中的每个订阅者发送信息(报刊)
            var bookers_len : Number = bookers_arr.length;
            for(var i : Number = 0;i < bookers_len;i++) {
                bookers_arr[i].update(mess);
            }
        }
    }
}
//-----------------------------------------------
//第五个文件  主文件 运行它
package com.dp.Observer {
    import flash.display.Sprite;
    /**
     * @author www.kenjor.com
     */
    public class Main extends Sprite {
        public function Main() {
            //实例化三个用户booker1,booker2,booker3
            var booker1:Booker=new Booker("booker1");
            var booker2:Booker=new Booker("booker2");
            var booker3:Booker=new Booker("booker3");
            //实例化一个信息中心
            var messageCenter:MessageCenter=new MessageCenter();
            //这三个用户需要订阅,找信息中心办理了订阅手续
            messageCenter.book(booker1);
            messageCenter.book(booker2);
            messageCenter.book(booker3);
            //信息中心给他们发送信息;
            messageCenter.send();
            //第一用户觉得信息没什么用,于是找信息中心办理了退订手续
            messageCenter.unbook(booker1);
                                               //信息中心只给booker2,booker3发送信息了
            messageCenter.send();
                        
            
        }
    }
}

输出

[trace] booker1收到消息:message from messageCenter
[trace] booker2收到消息:message from messageCenter
[trace] booker3收到消息:message from messageCenter
[trace] booker2收到消息:message from messageCenter
[trace] booker3收到消息:message from messageCenter

观看地址: http://www.qqread.com/flash/2008/03/n401975.html进入讨论组讨论。
收藏此文】【 】【打印】【关闭
较早的文章:[AS3]装饰者模式

较新的文章:火山动态文本滚动条V5
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章