我在设计一个sp短信网关, 关于业务分发/计费这块,有些问题想请教一下:
目前系统把每个业务配置都封装成一个对象(ServiceInfo), 系统启动的时候, 把这些对象都加载到hashtable中。
用户每条上行信息都封装成一个Message对象, 这里边有一个serviceInfo属性,用来存储每条信息匹配到的业务配置。
这样有个问题, 原先的系统中, message对象中的serviceinfo属性赋值是直接从hashtable中get出serviceInfo, 大家直到, java的对象是引用机制, 这样, 如果在某个地方修改了message的serviceinfo, 那么hashtable里边相应的信息也被修改, 这样是不允许的,
如果使用clone, 不直接把hashtable里的对象赋给message, 而是clone一份再赋值, 这样能避免上面的问题, 但是也引发出一个问题:产生大量的对象, 用户上行的短信很多, 或者正在做群发, 这样会不会造成系统性能下降?