比较小的用委托(金币 分数 等级 经验值)
比加大的用事件(服务器拉一个任务列表数据)
比较小的用委托(金币 分数 等级 经验值)
比加大的用事件(服务器拉一个任务列表数据)
委托的方式
开始先找到 按钮的组件
不要持有双向引用
父节点可以引用子节点 子节点要调用父节点的方法时 可以用事件或委托
但这个例子举得实在有点一般
这一步少了个演化步骤,本来整体可以缩减为IOC变量,Init()方法,Get()方法; 然后在写成模板的需求下,增加了一个mArchitecture变量和MakeSureContainer()方法,主要是为了用来调用非静态的抽象方法Init()
个人思考:
表现层复用的逻辑可以用在系统层,比如计时系统和成就系统
模型层则负责数据的定义以及提供数据的修改方法
工具层则负责提供基础设施,比如存储方法,网络链接方法,框架集成等等
当上层要改变下层状态时必须要用command,只是简单查询则可以直接方法调用
由于IController没有对应的抽象Controller,所以IBelongToArchitecture的阉割需要在子类中实现
其实可以为项目制作指定的抽象类,但是为了框架的通用性,所以新项目需要自己去对应的类里进行GetArchitecter的阉割
这里其实有问题你看罗敏是个大二货、她终于想起来要给罗琳和姑姑买礼物了。你们说
在构造函数中设定默认值
IOC容器的两个核心API,1.根据Type注册实例 2.根据Type获取实例
静态类用于模块化非常方便
静态类没有访问限制
使用static去扩展模块,其模块的识别度不高
如果一个类是单例类,那么我们就可以比较容易识别,这个单例类是一个模块类
ui和game节点
SceneManager.GetActiveScene().GetRootGameObjects();获得顶端节点
结构体可以实现接口
父节点可以引用子节点,子节点要调用父节点的方法时,可以用事件和委托。
无框架的项目不用完全杜绝,体量小的一次性项目
private static 在同一个类名脚本中都可以访问到。
counterModel.Count.OnValueChanged += newCount =>
{
//处理
}
跟
counterModel.Count.OnValueChanged+= OnCountChanged;
private void OnCountChanged(int newCount)
{
//处理
}
ViewController
表现层到系统层用Command,系统层通过事件或者委托通知表现层,在通知的时候可以推送数据,也可以让表现层收到通知后自己去查询数据。
增加了接口模块
表现层只能往系统层发动命令Command或者做数据查询,不可以发送事件,事件只能由底层系统层向表面层发送。
事件由系统层向表现层发送