匿名对象的方案虽然达到了我们想要的效果,但对比实体对象方案,又有什么不同呢,下面我们来对比一下:
- 数据传递性、复用性:
-匿名对象:基本上属于一次性数据,无法整体传递,无法复用。
+实体对象:传递性,复用性良好。 - 对重构、方法提取的支持:
-匿名对象:由于数据无法传递,写出的代码很难进行重构,我就普写过几百行代码而无法提取子方法重构的方法。
+实体对象:数据对代码重构、方法提取支持良好。 - 对缓存命中率的影响:
-匿名对象:数据与具体的业务场景(参数、条件等)密切关联,缓存命中率可能会较低。
+实体对象:数据易复用,缓存命中率可能会较高。 - 不同层次的数据模型自动映射转换(AutoMapper等)
-匿名对象:属性不定,类型不定,难以转换。
+实体对象:轻松实现映射转换。 - 数据利用率:
+匿名对象:数据按需获取,利用率高,基本无浪费。
-实体对象:数据都是整体取出,利用率低,浪费大。 - 程序性能影响:
+匿名对象:容易写出运行高效的代码,性能良好。
-实体对象:容易写出性能低下的代码。
通过上面的对比,希望能对方案的选择提供一些参考,至于如何取舍,最终选择什么方案,只能自己根据业务的特点来权衡了,合适用哪个就用哪个。