智慧 + 毅力 = 无所不能

正确性、健壮性、可靠性、效率、易用性、可读性、可复用性、兼容性、可移植性...

导航

桥接模式(Bridge)

Posted on 2009-11-23 13:09  Bill Yuan  阅读(344)  评论(0编辑  收藏  举报
菜太淡,不合有些人的胃口,所以要求食堂的师傅,专门开一个窗口,专门在做好的菜里多加些辣椒。

我在自己的站里运用了桥接模式:所有的影片都继承自我定义的BasicMovie 类(BasicMovie继承自MovieClip类),但是在四个下级栏目的影片里,需要定义相同的方法和事件来响应消息,BasicMovie没有这些函数,不符合要求,这时候,在四个影片里都写一遍是愚蠢的,我又写了一个SubTemplateMovie类继承自BaseMovie,里面加进一些通用的方法,然后四个下级模板影片都继承它,这样大大简化了后期开发。

//BasicMovie.as
//基类影片
//所有影片的原始类,一切影片的父类都继承此类而来
class BaseMovie extends MovieClip {
    var isLocked:Boolean;
    
//初始类开始影片函数
    var MovieStartFunction:Function;
    
//初始类影片主功能函数
    var MovieMainFunction:Function;
    
//初始类结束影片函数
    var MovieEndFunction:Function;
    var GlobalParam
    
//初始类构造函数
    function BaseMovie() {
    }
    
//
     
    
//发送消息
    function SendMsg(Msg:String, Mc:MovieClip) {
        _root.objCore.objMessageMap.SendMessage(Msg, Mc);
    }
    
//添加消息映射
    function UpdateMessage(Msg:String, MsgMapFunction:Function, ArrayParam, obj, IsMultiUsed) {
        _root.objCore.objMessageMap.UpdateMessageMap(Msg, MsgMapFunction, ArrayParam, obj, IsMultiUsed);
    }
    
//删除消息映射
    function DeleteMessage(obj) {
        _root.objCore.objMessageMap.DeleteMessageMap(obj);
    }
    function GetGlobalParam() {
        GlobalParam
=_root.objCore.strucGlobalParam;
    }
}
 
//SubTemplateMovie.as
//下级模板影片类
class SubTemplateMovie extends BaseMovie {
    var MovieRemoveFunction:Function;
    function SubTemplateMovie() {
        
this.stop();
        MovieStartFunction 
= function () {
        Lock();
        
this.play();
        };
        MovieEndFunction 
= function () {
            Lock();
            
this.play();
        };
     
        MovieRemoveFunction 
= function () {
            
this.stop();
            SendMsg(
"SUB_TEMPLATE_REMOVED"this);
            _parent.unloadMovie();
        };
        MovieMainFunction 
= function () {
            stop();
            SendMsg(
"SUB_TEMPLATE_OPEN"this);
        };
        UpdateMessage(
"LOADING_BAR_OVER", MovieStartFunction, nullthisfalse);
        UpdateMessage(
"BACK_TO_INDEX", MovieEndFunction, nullthisfalse);
    }
}

注(关于消息映射机制看 责任链模式)