singleton
object pool
strategies
command