Я бы не использовал Inheritance
в этом случае, потому что вы расширяете не только то, что делаете, но и то, что представляете, а это не так.Utility
и Singleton
являются похожими подходами и могут хорошо вам подойти, но затрудняют тестирование кода.Composition
кажется более естественным, потому что вы хотите добавить определенную (независимую) функциональность к подмножеству действий, а также облегчить тестирование. Итак, я бы сказал, что Composition
- лучший выбор.