表现层复用的逻辑可以用在系统层,比如计时系统和成就系统
模型层则负责数据的定义以及提供数据的修改方法
工具层则负责提供基础设施,比如存储方法,网络链接方法,框架集成等等
当上层要改变下层状态时必须要用command,只是简单查询则可以直接方法调用
表现层复用的逻辑可以用在系统层,比如计时系统和成就系统
模型层则负责数据的定义以及提供数据的修改方法
工具层则负责提供基础设施,比如存储方法,网络链接方法,框架集成等等
当上层要改变下层状态时必须要用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或者做数据查询,不可以发送事件,事件只能由底层系统层向表面层发送。
事件由系统层向表现层发送
struct比class有更好的内存管理效率
public struct SubCountCommand : ICommand
{
public void Execute()
{
CounterMode.Count.Value--;
}
}
命令模式
单个数值的变化,用委托的方式更加合适。比如,金币,分数,等级等。
颗粒度较大的用事件比较合适。比如从服务器拉取了一个任务列表数据,任务数据列表存到了model,此时model的任务列表发生了变更,这个时候向view发送事件
Model和View是自底向上的关系
交互逻辑:View->Model
表现逻辑:Model->View
子节点通知父节点用委托或者事件
父节点调用子节点可以直接方法调用
跨模块通信 用事件
耦合就是双向引用或者循环引用
静态类不能继承
方法调用:A需要持有B,才能调用B的方法。
委托,回调:A需要持有B,才能注册B的委托。