Event-Model-View-Controller 架构

27 篇文章 0 订阅
17 篇文章 0 订阅

MVC架构写的程序泛滥的厉害,但是有一个课题,耗时许久无法妥善解决。

课题是如何在系统运行过程中动态调整全局字号或者控件尺寸。

看似简单的不能再简单的全局变量赋值后再调用问题,

却因为Android或者Flex等高交互方案的UI持久化随意性而变得困难。


Android的Activity的生命周期最好不要强行控制,

应该让系统来决定是不是进行销毁,这样条件下,

无论Activity主线程或异步线程内,反复调用全局的布局尺寸变量并更新UI,

对系统的性能的影响随着布局的复杂而线性提高,

同时每个Activity的结构都会因为这个要求同时增加类似的处理机制,

总体来看,此方案可行且有实践经验,但是雷同代码和重复机制,真是愚蠢。


如果在Activity之外统一进行布局尺寸的更新控制,

将会是一个全局C读取M控制所有的V,

这个样Controller就不是MVC里面的C的概念了,

同时会因为UI持久化未知性,会增加非常多的非空判断,

而且这样的C也会因为V的增多而复杂。


反观现有的比较好的MVC实践,都对Runtime的Event(Flex)或者Delegate(.NET)有一定的依赖,

使用Event机制,解决的也就是我面对的全局通讯问题,一个点发出变化指令,

所有在持久化状态未被销毁的UI或者Class,随之响应的机制。


从而,提出EMVC(Event-Model-View-Controller )架构,

在Android中引入Greenbot的EventBus,在Flex里面引入CommandDispatcher,

设定一个全局EventBus或者CommandDispatcher

所有需要响应的地方设置OnEvent或者EventListener,

一个地方发出Post,管他其他地方在哪里,活没活着,能听着的,都会有响动,

响应的地方只需要根据Event里面的信息决定哪些需要变化就可以了。

不仅解耦,关键是省心省力,各管各的。


提出的EMVC相比原有的MVC架构,仅仅是将原来依赖Runtime的Event机制包含进来,脱离对于语言平台的依赖。

原有的MVC架构思路已经很好的划分了程序代码之间的运行机制,EMVC仅仅是在通讯这一个问题上向前走一步。

就像一个企业的部门划分一样,销售、生产、财务各司其职运行良好,但是随着业务总量的增加,

各部门间多对多的通讯机制难免越加复杂和指令多头发布,也会出现等着发呆不推不动的员工,

增加一个筛选、转送、协调各部门间指令信息的专门机构就十分必要。

三星管这叫秘书处,前清叫军机处,日本英国叫内阁,

总之,买卖大了,人多了,大家一起喊话太乱了,还是协调一下的好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值