抽象高于实现 ——unity框架提取
前言
- 我想提取框架
- 在完成一把枪械的逻辑后,抽取该枪械逻辑的结构关系,形成枪械的代码结构框架
- 抽象高于实现, 应该在抽象出来的代码结构内,去完成针对性的实现逻辑
- 抽象的约束,即有了约束和规范
- 多态的三种形式 虚方法 接口,抽象类,
议论
- 虚方法无法起到约束的作用,子类可以重写,也可以选择不重写
- 抽象类可以起到约束的作用
接口
- 对于接口,我们可以将共有的字段和属性封装到一个普通的父类中
- 然后将抽象方法封装成一个独立的接口
- 子类在继承父类的基础上,去实现对应的功能接口
- 接口是不能继承MonoBehaviour
抽象类
- 抽象类可以包含非抽象成员
- 抽象类可以继承MonoBehaviour
- 抽象类中的抽象方法,子类必须全部实现
- 抽象类不能挂载到物体上
总结
- 抽象类和接口都能完成我们的需求,但是接口是在抽象类的基础上进一步的分离抽象,进一步的职责单一化
抽象思路
- 对于V层的提取
- 字段,属性提取到父类
- 父类定义一个抽象的初始化方法,并且在父类的Awake方法内调用
- 由子类完成该方法的具体方法体
- (即父类管理了该方法什么时候进行调用,子类继承父类,只需要完成该方法的方法体即可,其余的不需要子类管理)
- 对于C层的提取
- 子类和子类交互
- 我们把枪械逻辑分成了V和C两层,C层需要访问V层,V和C都分割成了父子结构,父类需要持有父类的引用
- 在C层子类不需要查找V层子类,可以直接类型转换
- 在子类中定义V层子类的引用字段
- 将C层父类中V层父类引用向下转型
- 我们只需要在父层进行查找即可,子类对其进行向下转型
- V层用Awake,C层用Start
- 虚方法Start()
- 目前子类的Start方法,需要手动调用执行父类的Start
- 将父类的Start写成虚方法,然后子类进行重写(可以保证我们调用父类的Start)
- 约束子类初始化格式
在父类中定义一个Init抽象方法,并且在父类中调用;
子类实现该方法的方法体,完成子类初始化
子类的Start方法就不需要再写(这个时候在子类中就没有生命周期方法了)
注意事项
- 由于子类和父类都是用Awake进行脚本初始化的,涉及到执行顺序,需要将父类的Awake方法公开,在子类的Awake方法内调用执行父类的Awake方法
抽象高于实现 ——unity框架提取相关推荐
- 利用Attribute简化Unity框架IOC注入
在我们的领域驱动设计(DDD)开发中,我们经常需要IOC框架使得我的框架依赖翻转,依赖抽象,避免直接new依赖于我们的具体实现.这些使得我们的框架整个项目结构不变,很方便的改变具体实现,使得项目提供可 ...
- 未能解析主引用“Fiddler”,因为它是针对“.NETFramework,Version=v4.6.1”框架生成的。该框架版本高于当前目标框架“.NETFramework,Version=v4.5
警告 未能解析主引用"Fiddler",因为它是针对".NETFramework,Version=v4.6.1"框架生成的.该框架版本高于当前目标 ...
- Unity资源提取+KTX贴图转PNG
1.Unity资源提取工具:Disunity 下载地址:https://github.com/ata4/disunity 使用方法:java -jar disunity.jar extract /.. ...
- Unity框架之对象池GameObjectPool
Unity框架之对象池GameObjectPool 文章目录 Unity框架之对象池GameObjectPool 对象池的核心思想 对象池的使用流程 对象池的设计 通用的对象池框架 对象池的数据结构 ...
- 《大话设计模式(C#实现)》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+设计模式+GoF+UML+单例模式+观察者模式+抽象工厂+代理模式+框架编程+立钻哥哥++OK+)
<大话设计模式(C#实现)> 版本 作者 参与者 完成日期 备注 YanlzFramework_GoF_V01_1.0 严立钻 2020.02.10 ##<大话设计模式(C#实现)& ...
- 深入理解IOC模式及Unity框架
学习IOC发现如下博客写的很清楚了,故Mark下来以便以后查阅和温习! 1.IoC模式:http://www.cnblogs.com/qqlin/archive/2012/10/09/2707075. ...
- 基于xlua和mvvm的unity框架
1.框架简介 这两天在Github上发现了xlua的作者车雄生前辈开源的一个框架-XUUI,于是下载下来学习了一下.XUUI基于xlua,又借鉴了mvvm的设计概念.xlua是目前很火的unity热更 ...
- AOP原理解析及Castle、Autofac、Unity框架使用
转自:https://www.cnblogs.com/neverc/p/5241466.html AOP介绍 面向切面编程(Aspect Oriented Programming,英文缩写为AOP), ...
- 【Unity框架】XLua中Lua代码注入C#代码操作
文章目录 一.干净的基于XLua的框架下载地址 二.使用步骤 1.操作步骤 2.脚本添加 1.在游戏逻辑代码文件夹创建脚本HotFixTest.cs: 2.在游戏脚本管理代码文件夹创建脚本HotFix ...
- Unity框架——MVC框架
前言--什么是MVC框架 MVC全名是Model View Controller, 是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据 ...
最新文章
- UML与软件建模 第三次作业
- 005-算法-分治法
- 老大难的 Java ClassLoader,到了该彻底理解它的时候了
- php mysql生日提醒_基于AIML的PHP聊天机器人
- 在Myeclipse中没有部署jeesite项目,但是每次运行其他项目时,还是会加载jeesite项目...
- Javascript中的arguments数组对象
- docker镜像为什么要采用分层结构
- 【TW短评测】6999元Find X2 Pro一周体验:这块120Hz屏我能玩一年
- 详解如何使用 PCem 安装 Windows 98 操作系统
- mysql 定时任务 日志_mysql定时备份任务
- 在线词云工具Tagxedo的使用
- #if...#endif是C++中的条件编译预处理命令
- Cent OS 7上安装MySQL
- 西门子plc s7-200写的先进先出范例 用fifo
- Revi开发 - 碰撞检测
- Python-元组字典集合及其内置方法
- arduino串口监视器显示nan_【Arduino】初识Arduino
- 775 平台 硬件升级
- git实战-2、gitk使用
- 「小程序」开发 指南(里面是小程序开发的各种论坛和文档)