美文网首页
2021-06-23【总结】解耦

2021-06-23【总结】解耦

作者: 持刀的要迟到了 | 来源:发表于2021-06-23 13:09 被阅读0次

1.一个模块可能有多个实例;各个模块之间,尽量不要有对内部实例的持有引用。只会有对整体模块的持有,需要什么从该模块获取。
2.特殊情况:一般特殊情况都是需要从性能上考虑,因为不持有后,可能会因为重新索引等缘故导致性能下降。
什么时候可以对模块的实例持有?
当模块的实例已经定性,不会增加减少或修改时,别的模块可以这样持有。
如果该模块可能会无限扩展,那么外部不要持有它内部的对象。

3.例:
模块1:状态机系统
模块2:技能系统
模块3:buff系统
模块4:数值系统

1.状态机自己内部实现自己的逻辑,不应该持有任意一个独立的技能引用,以及任意一个独立的buff引用。
需要什么状态从SkillManager和BuffManager获取。
2.外部也不应该干涉状态机的状态变化,应该是自己获取状态/监听事件,模块内部闭环。
3.获取的内容不应该是无限扩增的,需要是有限类别的组合。如无必要勿添实体。

但是可以持有数值系统对象的引用:比如说一个数值表示血量,是一个class Value(string attrID ="血量")。
数值系统不管怎么修改内部数据,都不会清除这个对象,那么就可以持有这个索引。

因此:Buff不应该直接去改变别的系统。可以改变自身状态,或者发送事件。Buff系统内部需要闭环。

相关文章

  • 2021-06-23【总结】解耦

    1.一个模块可能有多个实例;各个模块之间,尽量不要有对内部实例的持有引用。只会有对整体模块的持有,需要什么从该模块...

  • 解耦

    解耦 对于大型重构, 最有效的手段就是 解耦, 解耦的目的使实现代码高聚合、松耦合。 解耦为何如此...

  • 20171127-03问题整理

    总摘要: 解耦. 接口降低. 架构. 2017-11-27摘要: 解耦. 接口降低. 架构. 1.为什么说解耦的...

  • 解耦

    今天小董给大家做了一个关于DMTP的精彩演讲,DMTP种种优秀的特性令我们这些听众叹为观止。 为何DMTP具有如此...

  • 解耦

    利用配置文件实现解耦 存在一个接口B 有3个实现类B1、B2、B3 在A类方法中需要调用B类实现代码: 此情况下,...

  • DDD 中的事件总线 (一)

    DDD 为什么需要event bus? 简单的说就是 解耦 ,无论是本地聚合间的解耦,还是微服务间的解耦. 没有e...

  • AFNetworking源码之AFAutoPurgingImag

    AFAutoPurgingImageCache图片缓存 通过2个protocol解耦,通过协议继承来解耦。协议相当...

  • iOS三方框架之 - AFNetworking的Https认证流

    对AFNetworking进行解耦AFNetworking解耦后可以分为以下几个模块:1. NSURLSessio...

  • 消息队列和RabbitMQ及AMQP协议介绍

    转自:二月_春风 文章地址 为什么要使用消息队列 异步处理 系统解耦解耦是消息中间队列解决的最本质问题。所谓解耦,...

  • 【5分钟背八股】说说你对aop的理解?

    AOP全称叫做 Aspect Oriented Programming 面向切面编程。它是为解耦而生的,解耦是程...

网友评论

      本文标题:2021-06-23【总结】解耦

      本文链接:https://www.haomeiwen.com/subject/yylbyltx.html