桥接模式(Bridge)

菜太淡,不合有些人的胃口,所以要求食堂的师傅,专门开一个窗口,专门在做好的菜里多加些辣椒。

我在自己的站里运用了桥接模式:所有的影片都继承自我定义的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,  null this false );
        UpdateMessage(
" BACK_TO_INDEX " , MovieEndFunction,  null this false );
    }
}

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

你可能感兴趣的:(bridge)