java 8, lombok, spring boot, gradle
Source available at https://github.com/piotrturski/hospital-simulator
-
once in a million (of what?) patients (all? dead?) or simulations?
-
change state != only one rule can be applied. diabetes
-
monster rule is applied even after another rule
-
manual ordering
-
apply all rules. easiest to extend, computationally most expensive
-
runtime fail fast (as a result expect not state but wrapper that throws exception when gets DEAD state)
-
static: remove dead from state enum. none programmer will ever make a mistake but requires a bit more complex architecture
Healthy.with(Insulin, Antibiotic).becomes(Fever) when(Healthy).gets(Insulin, Antibiotic).becomes(Fever) when(Diabetes).gets(Insulin).becomes(Diabetes).otherwise(Dead)