今天看第六条:避免创建不必要的对象。
作者先用了经典的String举例,String构造方法的参数本身就是一个String对象的实例,所以这样做就毫无意义地浪费了一个String对象,我们平时写代码的时候也可以注意一下这种问题,我刚刚搜了一下我们项目的代码,居然还真有这样用的地方,虽然不多而且影响也比较小,但应该当成一个习惯不要这样去使用。
String s1 = new String("bikini"); // DON'T DO THIS!
String s2 = "bikini";
接着,作者又说了当同时存在时,工厂方法一般优于构造方法,也是在于工厂方法可以不用每次都新建一个对象。当然像String这样的一个对象可能比较小,浪费的代价也很低,但是当我们使用一些庞大对象的时候就额外需要注意这一点。作者建议我们把这样的对象缓存起来以便重复使用。
在我们系统,说到庞大对象我第一时间就想到了我们的order,我们在使用的时候也确实通过queue来实现缓存使用。我感觉我们系统一般不需要处理太多的数据,但是庞大的数据确实是一大痛点,想订单下载每次上万就需要好久才能处理完,稍微再多一点就能轻松挤爆我们的下载服务器。面对这样的情况我们一个方面是要减小order的大小(根本做不到,还一直加字段),另一个方面自然是尽量减少它的数量。所以涉及到处理这样大对象的时候我们要更加小心,不要轻易去使用循环。另外我感觉我们上下层的逻辑也有待加强,之前还经常出现上下层导致对象数量暴增,可能需要重新设计整理才能更加有效处理对应数据,应付相应场景。
网友评论