前言

  • 我想提取框架
  • 在完成一把枪械的逻辑后,抽取该枪械逻辑的结构关系,形成枪械的代码结构框架
  • 抽象高于实现, 应该在抽象出来的代码结构内,去完成针对性的实现逻辑
  • 抽象的约束,即有了约束和规范
  • 多态的三种形式 虚方法 接口,抽象类,

议论

  • 虚方法无法起到约束的作用,子类可以重写,也可以选择不重写
  • 抽象类可以起到约束的作用

接口

  • 对于接口,我们可以将共有的字段和属性封装到一个普通的父类中
  • 然后将抽象方法封装成一个独立的接口
  • 子类在继承父类的基础上,去实现对应的功能接口
  • 接口是不能继承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框架提取相关推荐

  1. 利用Attribute简化Unity框架IOC注入

    在我们的领域驱动设计(DDD)开发中,我们经常需要IOC框架使得我的框架依赖翻转,依赖抽象,避免直接new依赖于我们的具体实现.这些使得我们的框架整个项目结构不变,很方便的改变具体实现,使得项目提供可 ...

  2. 未能解析主引用“Fiddler”,因为它是针对“.NETFramework,Version=v4.6.1”框架生成的。该框架版本高于当前目标框架“.NETFramework,Version=v4.5

    警告        未能解析主引用"Fiddler",因为它是针对".NETFramework,Version=v4.6.1"框架生成的.该框架版本高于当前目标 ...

  3. Unity资源提取+KTX贴图转PNG

    1.Unity资源提取工具:Disunity 下载地址:https://github.com/ata4/disunity 使用方法:java -jar disunity.jar extract /.. ...

  4. Unity框架之对象池GameObjectPool

    Unity框架之对象池GameObjectPool 文章目录 Unity框架之对象池GameObjectPool 对象池的核心思想 对象池的使用流程 对象池的设计 通用的对象池框架 对象池的数据结构 ...

  5. 《大话设计模式(C#实现)》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+设计模式+GoF+UML+单例模式+观察者模式+抽象工厂+代理模式+框架编程+立钻哥哥++OK+)

    <大话设计模式(C#实现)> 版本 作者 参与者 完成日期 备注 YanlzFramework_GoF_V01_1.0 严立钻 2020.02.10 ##<大话设计模式(C#实现)& ...

  6. 深入理解IOC模式及Unity框架

    学习IOC发现如下博客写的很清楚了,故Mark下来以便以后查阅和温习! 1.IoC模式:http://www.cnblogs.com/qqlin/archive/2012/10/09/2707075. ...

  7. 基于xlua和mvvm的unity框架

    1.框架简介 这两天在Github上发现了xlua的作者车雄生前辈开源的一个框架-XUUI,于是下载下来学习了一下.XUUI基于xlua,又借鉴了mvvm的设计概念.xlua是目前很火的unity热更 ...

  8. AOP原理解析及Castle、Autofac、Unity框架使用

    转自:https://www.cnblogs.com/neverc/p/5241466.html AOP介绍 面向切面编程(Aspect Oriented Programming,英文缩写为AOP), ...

  9. 【Unity框架】XLua中Lua代码注入C#代码操作

    文章目录 一.干净的基于XLua的框架下载地址 二.使用步骤 1.操作步骤 2.脚本添加 1.在游戏逻辑代码文件夹创建脚本HotFixTest.cs: 2.在游戏脚本管理代码文件夹创建脚本HotFix ...

  10. Unity框架——MVC框架

    前言--什么是MVC框架 MVC全名是Model View Controller, 是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据 ...

最新文章

  1. UML与软件建模 第三次作业
  2. 005-算法-分治法
  3. 老大难的 Java ClassLoader,到了该彻底理解它的时候了
  4. php mysql生日提醒_基于AIML的PHP聊天机器人
  5. 在Myeclipse中没有部署jeesite项目,但是每次运行其他项目时,还是会加载jeesite项目...
  6. Javascript中的arguments数组对象
  7. docker镜像为什么要采用分层结构
  8. 【TW短评测】6999元Find X2 Pro一周体验:这块120Hz屏我能玩一年
  9. 详解如何使用 PCem 安装 Windows 98 操作系统
  10. mysql 定时任务 日志_mysql定时备份任务
  11. 在线词云工具Tagxedo的使用
  12. #if...#endif是C++中的条件编译预处理命令
  13. Cent OS 7上安装MySQL
  14. 西门子plc s7-200写的先进先出范例 用fifo
  15. Revi开发 - 碰撞检测
  16. Python-元组字典集合及其内置方法
  17. arduino串口监视器显示nan_【Arduino】初识Arduino
  18. 775 平台 硬件升级
  19. git实战-2、gitk使用
  20. 「小程序」开发 指南(里面是小程序开发的各种论坛和文档)

热门文章

  1. RK3288_Android7.1调试uart串口屏
  2. spotlight on mysql--安装以及简介
  3. 关于人工智能的一些思考~
  4. 世界是数字的读后感:
  5. ItemsControl Grouping分组
  6. 手机网站前端开发经验总结
  7. 表达式二叉树(蛋疼ing)
  8. Coherence Step by Step 第一篇 入门(三)配置(翻译)
  9. secure CRT连接华三、华为模拟器
  10. 网管学习日记-ospf多区域