【发布时间】:2012-10-22 01:21:18
【问题描述】:
我正在编写一个 java 模拟应用程序,它有很多实体要模拟。这些实体中的每一个在系统中的任何时候都具有一定的状态。对此类实体建模的一种可能且自然的方法是使用state (or state machine) 模式。问题是如果有很多状态切换,它会在运行时创建很多对象,这可能会导致系统性能不佳。我有哪些设计替代方案?我希望性能成为可维护性之后的主要标准。
谢谢
【问题讨论】:
-
您对对象创建将成为模拟瓶颈的把握有多大?
-
我在考虑 enum + switch
-
"might" 是您问题中的关键字:您创建了更多您想要的对象这一事实并不意味着性能无法接受!在分析之前进行优化是个坏主意;编写理想的解决方案,然后进行优化。
-
实体集可能会变得非常大。如果许多实体在一个模拟步骤中更改其状态,则可能会产生巨大的对象创建开销,因为每次实体执行状态转换时,状态机模式都会创建一个新的状态对象。
-
我也认为存储在数组中的枚举加上 switch 语句可能是您的最佳解决方案。
标签: java performance simulation state-machine