繁体   English   中英

编程最佳实践-循环对象

[英]Programming best practice - loop objects

这似乎是一个广泛的问题,但是当我在我的一个项目中优化代码时,这让我震惊。

假设我有一个需要更新的对象数组。

假设每个对象都有一个自己的方法,该方法对某些应用程序状态进行计数 (直到对象循环的最后一刻都保持不变)

for *every* object in *array*
object.update();

inside object:
... compute.something();

这导致每个对象都为其自身“计算”并应用该值的过程。

因此,我坐在那里,心想,如果我得到所有基本上计算同一事物并在循环之前进行计算并将结果推入循环本身的所有项目的列表,该怎么办?

导致类似

computeData

for *every* object in *array*
object.update(computeData);

inside object:
apply(computedData);

有了这种结构,我实际上不需要n次计算所有事物,其中n是对象数组的大小,而只需一次

我以前从未听说过这种方法,想问一下这是正在使用/教导/应用还是不行? 我知道我没有找到任何黄金,只是想知道您的意见,是否我从一开始就将重点放在这种结构上?

我对您的问题尚不完全清楚,但看起来可能是三种设计模式:

1-记忆

https://en.wikipedia.org/wiki/Memoization

频繁调用函数的结果在第一次使用该输入调用时被缓存(对于给定的输入)。 这意味着反复调用意味着不会每次都重复执行相同的工作。

2-观察者模式

https://en.wikipedia.org/wiki/Observer_pattern

可以注册对象以侦听另一个对象中的更改/触发器。 在这种情况下,您的每个对象数组都可以向中央“循环”对象注册,并在触发“我希望更新数据”操作时发送回值。

3-回调模式

https://en.wikipedia.org/wiki/Callback_(computer_programming)

更一般地,当中心对象请求时,独立对象的想法能够返回值。

如果您有这些想法,建议您阅读“ 设计模式” 现在经典的“四人帮”一书已经很老了,但是这些想法仍然存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM