智慧 + 毅力 = 无所不能

正确性、健壮性、可靠性、效率、易用性、可读性、可复用性、兼容性、可移植性...
随笔 - 991, 文章 - 0, 评论 - 27, 阅读 - 341万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

桥接模式(Bridge)

Posted on   Bill Yuan  阅读(345)  评论(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);
    }
}
复制代码

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

(评论功能已被禁用)
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示