项目记录21-- 原来c#框架mediator改lua--02
来源:互联网 发布:安卓全球电视直播软件 编辑:程序博客网 时间:2024/05/20 22:29
c#框架里面分Mediator和Module两个,但是在开发时候发现module这个只有注册mediator这功能,用lua重写把Mediator和Module合并。一个Mediator也代表Module.每个模块(Mediator)都是独立的通过过事件发送进行通信,实现解耦。为了能尽量接近以前quick-coco的开发,重新将quick源码开了一遍哪个是眼花啊,能用的还是有的。
实现BaseMediaotr.lua基类,以后所有的mediator(Module)都继承它(呵呵了,lua实现继承),MediatorManager.lua单例管理所有的Mediator。
直接上个LoginMediator.lua看看看实现继承,用过quick开发的估计感觉很很熟悉。
--[[
mediator:模块进行解耦
]]
local BaseMediator = class("BaseMediator")
local _Evevnts = nil
local _Notics = {}
--构造方法
function BaseMediator:ctor(mediatorName)
--设置c#层事件接口:使用c#事件不使用lua的,这样在c#,lua就可以通过发送事件模块通信
--减少使用最好只在Meditor(Module)需要通信时候用,View里面使用内部的机制
_Evevnts = luaBaseMediator.New(mediatorName)
end
--子类重写:监听事件
function BaseMediator:Notification( )
return {}
end
--子类重写:监督事件处理
function BaseMediator.ProcessEvent(evt)
end
--注册监听
function BaseMediator:RegisterNotifications(tab)
_Notics = tab
for i=1,table.getn(_Notics) do
Notifier.Instance:RegisterEventListener(_Notics[i],_Evevnts)
end
end
--移除所有监听
function BaseMediator:RemoveAllNotifications( )
for i=1,table.getn(_Notics) do
Notifier.Instance:RemoveListener(_Notics[i],_Evevnts)
end
end
--离开
function BaseMediator:Exit( )
self:RemoveAllNotifications()
_Evevnts = nil
_Notics = nil
end
return BaseMediator
-------------------------------------------------------------------------------------------------
LoginMediator = class("LoginMediator",require("Base.BaseMediator"))
--构造函数
function LoginMediator:ctor( )
LoginMediator.super.ctor(self, "LoginMediator")
self:RegisterNotifications(self:Notification())
end
--监听事件
function LoginMediator:Notification( )
return {
LoginNotice.Show
}
end
--事件处理
function LoginMediator.ProcessEvent(evt)
print("LoginMediator--------- : " ..evt.EventType)
end
--mediator退出处理
function LoginMediator:Exit( )
--先调用父类的Exit
self.super:Exit()
end
return LoginMediator
--测试调用就可以实现这个模块了
1.MediatorManager:Instance():AddMediator(MediatorType.LoginMeditor,LoginNotice.Show)
2.发送消息LoginNotice.Show就可以接受到。
写完了Mediator类,接下来就要实现SceneManager,DataManager,UIManager等,打算在每个Mediator(Module)里面使用MVC进行.看电影去貌似很久没看了。
- 项目记录21-- 原来c#框架mediator改lua--02
- 项目记录20-- 原来c#框架mediator改lua--01
- 项目记录29--unity-tolua框架 c#导出定时器lua
- 项目记录22-- tolua基于lua框架事件派发
- 项目记录24--unity-tolua框架 View01---UIBase.lua
- 项目记录25--unity-tolua框架 View02---BasePanel.lua
- 项目记录26--unity-tolua框架 View03-UIManager.lua
- 项目记录28--unity-tolua框架 lua使用协程
- lua开源测试框架busted源码学习(三)--中介者模式mediator.lua
- 原来 lua
- 项目记录36--tolua 框架真机成功热跟新搞定 + 简单池子PrefabsPool.lua
- C#项目改名字方案
- 项目后期Lua接入笔记02--框架剥离
- CPP项目添加lua支持配置记录
- cocos2d-x LUA项目设置记录
- 记录当前项目lua内存泄露问题
- tolua 框架 c# 调用 lua 过程 笔记
- SSH框架项目学习记录
- android四大组件之service
- CodeForces 630 M. Turn(水~)
- ASP.NET 4.0尚未在 Web 服务器上注册
- Memcached—安装
- Zabbix 下监控tomcat多实例,自动化脚本配置
- 项目记录21-- 原来c#框架mediator改lua--02
- 推荐一个清理自己电脑磁盘的磁盘容量图形化软件--WinDirStat
- BZOJ_P3110 [ZJOI2013]K大数查询(线段树+整体二分)
- BZOJ3716: [PA2014]Muzeum
- 控制器的数据传递--block和delegate如何选择
- android上dialog横屏下实现全屏效果
- android四大组件之contentProvider
- android提示Toast的使用
- CodeForces 630 N. Forecast(水~)