zoukankan      html  css  js  c++  java
  • Flex MVC框架:Cairngorm

    基本框架图:

    单例代码(经常要用到):

    public class FlickrModelLocator implements IModelLocator

      private static var _instance:FlickrModelLocator;  
     
      public function FlickrModelLocator(enforcer:ModelSingletonEnforcer)
     {  
         if(enforcer==null)
         {
            throw new Error("You can only have one flickrModelLocator");
         }   
      }
      
      public static function getInstance():FlickrModelLocator
      {
         if(!_instance)
         {
            _instance=new FlickrModelLocator(new ModelSingletonEnforcer);
         }
         return _instance;
      } 

     //这个类是用于防止外部类去实例化

    class ModelSingletonEnforcer{}

    cairngorm内容:

    bussiness:与服务器交互,并返回结束给common

    common:调用bussiness方法,来请求服务器。 用bussiness返回的数据,来更新model,model是给view绑定的。

    control:只是集中注册并管理事件(Event)与命今(Command)的映射关系,在主窗体中实例化

    event:继承extends CairngormEvent,定义事件名

    model:改变该类的值,View也会变,因为View是绑定该类的。实现implements IModelLocator接口,单例类,[Bindable]

    view: 前端界面,绑定读取model

    vo:就是实体类,实现implements IValueObject接口

    1.         前端控制器(FrontController)监听用户行为

      前端控制器是Cairngorm事件的唯一监听者,但其不并做任何操作,只是集中注册并管理事件(Event)与命今(Command)的映射关系

      操作:

        1.类要继承extends FrontController

        2.addCommand(FlickrEvent.PHOTOS_SEARCH,SearchCommand);    

        //这里变事件FlickrEvent.PHOTOS_SEARCH映射到SearchCommand类中,SearchCommand类要实现implements ICommand接口,当执行FlickrEvent.PHOTOS_SEARCH这个事件时,就会调用SearchCommand中的execute(event:CairngormEvent)方法。

        3.FrontController这个文件要在主窗体中注册,以便绑定事件

          xmlns:control1="com.album.control.*"

          <control1:FlickrFrontController></control1:FlickrFrontController>

    2.         命令(Commands)执行所有用户操作

        前端控制品(FrontController)监听到事件与命令有匹配时,便告诉命令(Commmands)调用execute()方法处理事件。

        调用bussiness方法,来请求服务器。 用bussiness返回的数据,来更新model,model是给view绑定的。实现IResponder这个接口

        当然如果没有与服务器交互就不要调用bussiness,也不要实现IResponder这个接口

    3.         服务器端业务逻辑委托给Business Delegate

      当命令(Commands)执行时,它只是关心是否获取到数据,而并不关心获取到什么具体数据。因为经常需要从服务器端获取数据,此时命令(Commands)更喜欢把它委托给其它类去操作。所以需要处理服务器端业务逻辑的时候,你都可以委托给命令(Commands)可以调用的Business Delegate类去处理。

      与服务器交互,并返回结束给common来处理  

    4.         在Model Locator保存状态并且让Model通知View

      Model Locator是一个保存应用程序全部状态和包含Value Objects的地方。当应用程序状态改变时,Moel Locator 通过Data Binding方式来通知View改变。

  • 相关阅读:
    每日总结:DIV弹层遮盖、DIV设置透明背景色、JS调用SharePoint 中的SP.UI.ModalDialog弹出遮盖层显示
    八、WinForm客户端的配置与使用
    11.1 使用框架应具备哪些知识或技能?
    五、框架的结构
    11.2 如何取得汉字的拼音或者拼音首字母缩写?
    九、IBeamMDAA的Web客户端的配置与使用
    六、框架的应用服务器配置
    十、IBeamUtility的使用
    七、IBeamMDAA在IIS宿主服务器的配置
    三、框架的目标与解决的问题
  • 原文地址:https://www.cnblogs.com/chencidi/p/1881589.html
Copyright © 2011-2022 走看看