flex4,puremvc,pipes,分模块编程心得

公司需要上框架,就找了一个结构简单点的框架:puremvc,简单介绍一下这个框架,这个框架是以观察者身份的框架,是个很灵活的框架,m,v,c中使用消息机制进行通信。这个框架有个缺点,内存容易泄漏,在用的时候注意,很注意很注意把不用的东西remove掉。在网上很容易找到框架的详细介绍,和一些demo的代码。

pipes utilities,也就是所谓的通道,为什么要使用通道呢?模块的结构都是一个单独的puremvc结构,模块和模块,shell和模块之间的通信 不能使用puremvc中的消息进行,因为消息是在一个puremvc中使用的,在多个puremvc中消息是不能跨越的。所以引进了pipes utility。在两个puremvc中需要进行数据交互的时候,需要建立两个puremvc之间的通道(pipes)。假如是模块A和模块B之间需要传递一个数据C,首先建立两个之间的pipe,在模块A的view中的A.mediator,发送一个puremvc的消息,如sendNotification( AFacade.SEND_MESSAGE_TO_B, C );模块A的view的A.JunctionMediator,接收AFacade.SEND_MESSAGE_TO_B这个消息,然后将这个消息发向A和B的通道,

override public function handleNotification( note:INotification ):void
  {
   
   switch( note.getName() )
   {       
    case ApplicationFacade.SEND_MESSAGE_TO_B:
     junction.sendMessage( PipeAwareModuleConstants.MODULE_TO_B_PIPE,
           new Message( PipeAwareModuleConstants.MODULE_TO_B_MESSAGE,
               null,
               note.getBody() ));
     break;    
    // Let super handle the rest (ACCEPT_OUTPUT_PIPE, ACCEPT_INPUT_PIPE, SEND_TO_LOG)        
    default:
     super.handleNotification(note);     
   } 
  }

同样在B的view的JunctionMediator中,会有接收他们之间通道的函数

override public function handlePipeMessage( message:IPipeMessage ):void
  {
   switch ( Message(message).getType() )
   {
    case PipeAwareModuleConstants.MODULE_TO_B_PIPE:
     sendNotification( ApplicationFacade.MESSAGE_FROM_A_RECEIVED,
          Message(message).getBody() );
     break;

   }
  }

在B中的Mediator去接收ApplicationFacade.MESSAGE_FROM_A_RECEIVED,这个消息,得到通道传过来的数据。

数据的流动是:A->A的puremvc中的通知->A,B的pipes->B的puremvc的通知->B

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值