事件是从底层系统层向表现层发送的
UnRegisterOnDestoryTrigger挂到一个对象上,对象销毁的同时,时间也会相应注销
事件是从底层系统层向表现层发送的
UnRegisterOnDestoryTrigger挂到一个对象上,对象销毁的同时,时间也会相应注销
Command只能由表现层向底层系统发送
IUtility是一个单纯的接口,用于工具类继承,工具类中有具体的实现方法
Architecture中有注册接口,获取接口的方法
Model层负责管理数据,Utility层负责提供工具API,及提供API又有状态的代码放在System层
表现逻辑:当Model数据变更时,视图来显示变更后的数据;
交互逻辑:接收用户输入改变Model数据
有没有状态可以理解为这个对象需不需要维护数据
System层中有数据变量和方法
在表现层想要使用System的话,需要通过Command执行
System层的利用率针对不同的项目是不一样的,有可能使用率很高,也可能根本用不上
正常实现接口的方法叫接口的隐式实现
接口的名字.方法,叫接口的显式实现
注册接口,类继承接口后在类中实现方法,可通过注册接口,获取接口来得到实例
接口可以直接切换
Init交给子类去实现,并提供必备的注册方法给子类
比较小的用委托(金币 分数 等级 经验值)
比加大的用事件(服务器拉一个任务列表数据)
委托的方式
开始先找到 按钮的组件
不要持有双向引用
父节点可以引用子节点 子节点要调用父节点的方法时 可以用事件或委托
但这个例子举得实在有点一般
这一步少了个演化步骤,本来整体可以缩减为IOC变量,Init()方法,Get()方法; 然后在写成模板的需求下,增加了一个mArchitecture变量和MakeSureContainer()方法,主要是为了用来调用非静态的抽象方法Init()
个人思考:
表现层复用的逻辑可以用在系统层,比如计时系统和成就系统
模型层则负责数据的定义以及提供数据的修改方法
工具层则负责提供基础设施,比如存储方法,网络链接方法,框架集成等等
当上层要改变下层状态时必须要用command,只是简单查询则可以直接方法调用
由于IController没有对应的抽象Controller,所以IBelongToArchitecture的阉割需要在子类中实现
其实可以为项目制作指定的抽象类,但是为了框架的通用性,所以新项目需要自己去对应的类里进行GetArchitecter的阉割
这里其实有问题你看罗敏是个大二货、她终于想起来要给罗琳和姑姑买礼物了。你们说
在构造函数中设定默认值,以及监听数值变化并存储
定义接口,定义继承接口的实现类
IOC容器的两个核心API,1.根据Type注册实例 2.根据Type获取实例
IOC容器中有一个字典,用于存储单例
静态类用于模块化非常方便
静态类没有访问限制
使用static去扩展模块,其模块的识别度不高
如果一个类是单例类,那么我们就可以比较容易识别,这个单例类是一个模块类
ui和game节点
SceneManager.GetActiveScene().GetRootGameObjects();获得顶端节点