博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
参数和基类
阅读量:7144 次
发布时间:2019-06-28

本文共 952 字,大约阅读时间需要 3 分钟。

  之前遇到过一个挺头疼的bug。

  我们的游戏将所有的数据放在一个单例中,每个人用到的时候都是自己去操作,数据是公开的,随便操作。

  问题来了,突然有一天,一个比较复杂的系统里各种跳转界面,跳转函数的参数都是一个个数据对象,直接可以使用的数据。

  有一个武将卡升级,直接新生成了一个武将卡(服务器给的)并塞到了数据单例的字典里,key没有变,但是value变了。这样之前所有用到这个value的地方,数据都是旧数据。

  虽然可以通过对原始value的fileld赋值操作避免这个bug,但是如果原始的field是个非常庞大的类,操作起来还是麻烦很多,另外谁也不知道会不会有人哪天忘记了又new了一个出来。

  我自己想了个办法。

  传递的参数如果是key,就可以了。只是每次都要根据提供的查询函数,查找相应的value,这样我们的权利就变得越来越小,维护起来也就非常简单了。数据操作必须通过提供的入口,所有的数据都是私有的。

  好了,既然参数是key,那就可以传递基类了。首先,所有的人物,装备,物品。。。都应该继承自一个基类(uid ...)。然后可能要面临到一个传递多个数据的问题(List<itembase>),那就通过“扩展方法”转换出来。

1     public static List
ToItemBaseList(this List
pEquipts)2 {3 List
tItemBases = new List
();4 pEquipts.ForEach(v => tItemBases.Add(v));5 return tItemBases;6 }

  这样做还有个好处,scrollview 等等都可以很方便的去写初始化函数了(代码生成简单了),肯定还有好多有用的地方。

  不过以上都是个人观点,有利有弊肯定要到实战中才可以看出来。

转载于:https://www.cnblogs.com/mundo/p/4891635.html

你可能感兴趣的文章
如何自动搞定全站图片的alt属性?
查看>>
配置一次,到处运行:将配置与运行时解耦
查看>>
突发热点事件下微博高可用注册中心vintage的设计\u0026实践
查看>>
Elixir 1.3带来新的语言功能、API和改进后的工具
查看>>
用Elm语言降低失败的风险
查看>>
抓住热门话题一对一直播,如何在风浪四起的直播市场劈风斩浪? ...
查看>>
手把手教你用owncloud搭建属于自己的云盘
查看>>
epoll+socket实现 socket并发 linux服务器
查看>>
阿里巴巴人事再调整,将打通淘宝、天猫两个消费场景 ...
查看>>
Kubernetes + CRI + Kata + Firecracker
查看>>
菜鸟成都未来园区启动,无人车首次进入园区调拨运输环节 ...
查看>>
算法不扎实的程序员,每个都很慌
查看>>
4个需要避免的常见Kubernetes监控陷阱
查看>>
规划一个智能工厂应避免的十个坑
查看>>
Linux 虚拟网络设备详解之 Bridge 网桥
查看>>
LaTeX的简单使用方法
查看>>
IO流
查看>>
第二十四章:页面导航(四)
查看>>
数字对讲系统开发札记(前端linux c 后端 c#)
查看>>
海外共享公寓品牌Tripalink完成A轮融资,险峰长青领投
查看>>