业务场景
场景:今天开发一个业务方法,每次上传图片时,都会去调用此方法,在业务方法里需要判断,上次是否有从服务器获取过业务编码列表,如果有,则直接从列表中拿出相关的业务编码,如果没,则从服务器获取,获取后并保存下来,以免下次用时,重复获取。
需求:
1、此业务编码列表生命周期为程序的生命周期,即app生命结束时,此列表会清理掉,所以不能持久化本地。
2、整个项目工程没有一个数据中心来存放这种全局的缓存数据(是不是觉得不可思议?但事实就是这样)。
3、有些人会想,你把这个列表做为当前界面的属性存储起来不行???不行,因为还有另一个功能模块也需要调用此方法,也要用到此列表。
一开始完全没想到函数静态变量上,一直在工程里找有没有这样一个数据中心(单例,程序生命周期中只初始化一次),但工程的数据中心存储的都是些持久化的数据,这个业务目前只在两个子功能用到,如果不用到这两子功能,有可能这数据永远不会存在和用到,所以放在全局的数据中心似乎也不太合适,要是以后都这么添加,数据中心的数据会越来越乱,只能另谋它法。
函数静态变量
以前只是知道,函数内部的静态变量,在第一次函数时才被初始化,但是没去了解它的生命周期。
静态局部变量在函数内定义,生存期为整个源程序,但作用域与自动变量相同,只能在定义该变量的函数内使用。退出该函数后, 尽管该变量还继续存在,但不能使用它。
函数静态变量完全能满足以上需求,在方法内部定义一个静态列表变量变行了。
今天之后,突然发现之前对函数静态变量用的这么肤浅,不要再把业务需求量不大的数据放数据中心了,这样用试试
网友评论