StrangeIoC框架学习

StrangeIoC框架学习


1.需引入程序集
  using strange.extensions.command.impl;


2.需要一个MVCS框架的入口
  ①定义脚本GameContext:MVCSContext
  ②重构构造函数,可F12进入类中查找
   如:public GameContext(MonoBehaviour view, bool autoMapping) : base(view, autoMapping){}
  ③重写mapBindings()方法,此方法专门用来实现绑定映射(绑定脚本/事件)
   如,下面三种绑定方法:
        
        (1)使类实现单例类
        //绑定IntergrationModel,使其实现单例类
        injectionBinder.Bind().To().ToSingleton();


        (2)将View和Mediator绑定
        //将SelectView和SelectMediator绑定在一起
        mediationBinder.BindView().ToMediator();


        (3)将事件类型和事件类绑定
        //将CommandEvent.ChangeMultiple事件和ChangeMultipleCommand脚本绑定在一起
        commandBinder.Bind(CommandEvent.ChangeMultiple).To();


3.有了启动框架的入口,然后就需要开启这个框架
  如在游戏整体初始化的脚本中开始框架:
  ①定义一个游戏初始化脚本GameRoot,使其继承ViewContext
  ②在其Awake()方法中开启:
        //开始MVC框架
        context = new GameContext(this, true);
        context.Start();
  ③上述逻辑运行后,MVCS框架就开始成功(即GameContext)并调用GameContext.mapBindings(),完成绑定的一系列操作


4.一个UI视图对象对应一个View脚本,而一个View脚本对应一个Mediator脚本。
  其中View脚本需继承EventView; Mediator脚本需继承EventMediator


  *View脚本只处理自身视图中的视图/按钮等功能(需提供与外部处理的方法供Mediator脚本调用)
  
  *Mediator脚本则处理View视图对外调用的功能方法:
    如:①定义选择视图的Mediator脚本,使其继承ViewContext
        ②利用反射[Inject]反射获得绑定了的对象(通过属性来定义)
          [Inject]
    
          public SelectView SelectView { get; set; }
        ③获得SelectView 后,则可以在需要时调用SelectView里的方法来处理


5.通过Dispatcher来完成不同枚举类型事件与对应的事件脚本的监听调用
  (需事先设定不同的事件枚举类型)


  ①两个已绑定的对象(如View和Mediator)相互的监听调用


    比如:
    A.在枚举类中设定ViewEvent.CHANGE_MULTIPLE枚举类型


    B.在SelectView中
        //利用dispatcher来注册ViewEvent.CHANGE_MULTIPLE的点击事件,并向监听方传递参数1
        dispatcher.Dispatch(ViewEvent.CHANGE_MULTIPLE, 1);


    C.在SelectMediator中
    (1) 写定一个OnViewClick(IEvent evt)方法供监听成功后调用,其中IEvent evt为传递的参数,可以通过evt.data开获取,需要强转类型


    (2) //利用SelectView.dispatcher来监听ViewEvent.CHANGE_MULTIPLE事件,
        //当监听事件被触发时调用OnViewClick方法
        SelectView.dispatcher.AddListener(ViewEvent.CHANGE_MULTIPLE, OnViewClick);


    D.上述ABC三步,实现了事件的相互监听触发


  ②两个已绑定的对象(如Command事件类型和Command类)相互的监听调用
    (Command类需继承EventCommand)
    
    比如:
    A.在枚举类中设定CommandEvent.ChangeMultiple枚举类型


    B.在需要调用Command类的地方使用Dispatcher.Dispath()来发送事件实现
       //发送事件,并传递参数multiple倍数
        dispatcher.Dispatch(CommandEvent.ChangeMultiple, multiple); 
    
    C.在已绑定的对象Command类中则可以通过Execute()来处理上述事件调用,其中通过evt.data来获取传递的参数,需要强转类型

你可能感兴趣的:(StrangeIoC)