(转)moduleVScomponent

news/2024/7/4 13:00:07
今天要记录一下技术上的事情,根据我这两个月来的学习把module、component这两个用来解耦的东西做下较为详细的说明,以及这两个与主程序的关系还有我所了解的通信方式做一下总结。
首先,module和components都可以把一个比较大的程序分成几个“部分”,这样每个部分可以单独开发和测试,更符合软件工程的“分而治之”思想,也会大大减少开发的难度和尽可能的减少认为错误,而且还都可以复用。

module是可以动态加载和卸载的,也就是说它不是编译到主程序中的,可以做到想要的时候拿来,不想要的时候卸掉。因为module是预先编译的,但是module不可以独立执行,一定要嵌到一个Application中才可以运行。注意:用它的时候用的是.swf,也就是编译之后的代码。简单的应用可以用<mx:ModuleLoader>标签,在里面把url属性赋值就可以了,例如url="******.swf",复杂一点的就要用moduleManager类来进行管理和控制了,跟其他的Manager是差不多,详细的根据Api吧。

component是静态的,它的用于自定义一个组件(类似于Button、dataGrid等),只要包含了定义好component的包,在Flex Builder中的Design模式下就可以像拖拽Button一样来应用它,会非常的方便。它在应用的时候相当于把自己嵌进Application中,要随着Application进行编译。这从某种意义上说有点像import和include的区别。在代码应用上,在Application中的xmlns属性中引入定义好的component所在的包就可以了,例如:xmlns:something="components.*",标签中可以这样引用<something:yourComponent>,yourComponent就像一个自定义的button。

建立module和component只需要在IDE中右键,其余的就自然明白了。下面趁热打铁,说一说通信上的事情。
首先,调用主程序的方法或者属性,都可以用parentApplication.sth来调用。理论上来说只要module可以调用主程序中的方法,那么module和Application之间的所有数据交互任务就都可以完成了,只是实现起来会比较麻烦,我这样做过,包括module和module之间通信,可以通过Application作为桥。而更为高级一点的技术是通过自定义事件和接口契约来进行更为随意的通信。比如说Application要和Module通信,那么首先要明确module要提供出什么方法A(),然后定义一个接口,这个接口要继承IEventDispatcher,然后此接口声明module想要提供的方法A(),之后module要实现这个接口,把A()方法实现,还要声明一个特定类型的事件,然后Application中声明一个ModuleLoader,要通信的Module跟其关联,然后通过child as 接口的名字获得接口就可以监听特定事件,也可通过那个接口调用Module的方法了。听起来挺复杂的,其实确实挺复杂的。要比较了解接口和自定义事件,要不挺难整明白到底怎么回事的。总之就是通过接口
和自定义事件来完成很随意的通信,不过实现起来还真是挺有难度的。
上面听起来挺蒙的,缕一下,就是通过一个接口(Module实现它,主程序通过Module获得它),来监听Module的事件和调用Module的方法。对,就是这个意思。

通信上总结一下,Module和component都是可以parentApplication来调用主程序的方法和属性的;component可以指定id,然后Application可以通过id直接调用component中的对外方法;Module貌似是行不通的,我没实现过,有人弄通了指教一下哈;通过自定义事件是可以进行比较方便的通信,component和Module都可以;如果中间加上接口的话会更好,结构更清晰,解耦性更好,但同时实现起来也相对麻烦些。本人经验尚浅,如有不妥,敬请指正~

http://www.niftyadmin.cn/n/4036206.html

相关文章

关于2016的规划

这两天发生了许多事情&#xff0c;让我想了很多。 我决定好好经营这个博客&#xff0c;写下我的各类总结&#xff0c;权当是自己的日记——学习总结日记。 希望所有看到这个博客的人留下足迹&#xff0c;给予我一丝鼓励吧。 接下来的一年里&#xff0c;主要是几个方面&#xff…

如何在Mac OSX 中制作dylib和使用dylib

如何在Mac OSX 中制作dylib和使用dylib 本文本着简单易读的方式给朋友们,本人为原创 1.首先是构建一个函数库 编辑add.c int add(int a,int b) { return ab; } int axb(int a,int b) { return a*b; } 保存 其中两个函数  add axb 这是简单的写的,复杂的自己开发,这里主要介绍…

Adobe Flex迷你教程 -- 合理使用Module分割项目以及对Module的使用

现在说说Module&#xff0c;这篇教程代码不是最重要的&#xff0c;怎么样合理的使用Module以及注意的问题才是关键&#xff0c;所以建议大家注意下面红色语句。Module&#xff0c;可以将我们的项目按需划分为N个模块&#xff0c;在编译时将项目编译为主文件以及N个module的swf。…

HDU 4883 TIANKENG’s restaurant (贪心)

链接&#xff1a;带我学习。带我飞 第一次BC&#xff0c;稳挂&#xff0c;WA n多次。今天又一次做了一下 略挫#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <map> #include <string> #include …

BZOJ 1570: [JSOI2008]Blue Mary的旅行( 二分答案 + 最大流 )

二分答案, 然后对于答案m, 把地点分成m层, 对于边(u, v), 第x层的u -> 第x1层的v 连边. 然后第x层的u -> 第x1层的u连边(oo), S->第一层的1(PEOPLE_NUMBER), 每一层N -> T(oo), 假如最大流是等于人数&#xff0c;就是可行答案. ----------------------------------…

受邀Quora,试水麻球

受Quora邀请了&#xff01;有的加我

通过SSH连接N900

N900采用的maemo是基于debian的linux系统&#xff0c;通过自带的application manager管理软件时&#xff0c;操作体验还有待改进&#xff0c;所以这里推荐通过SSH连接&#xff0c;使用cli来进行相应操作。 需要在手机端安装OpenSSH来开启SSH服务&#xff0c;在application mana…

PureMVC总结(附Hello World含PureMVC源码代码和文档)

PureMVC总的流程是&#xff1a; Faade通过一个STARTUP的Command来进行Proxy和Mediator的注册&#xff0c;初始化&#xff08;这样Proxy和Mediator就可以接受Notification消息&#xff09;。 Command通过Faade中注册的对应Notification触发。 Proxy只发送Notification&#xff0…