strategy enum pattern
使得 constant-specified method 能共享