抽象高于实现 ——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方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值