Часто шаблон зависит от намерения столько же, сколько реализация .
В этом случае State возможно, если целью этого класса является представление набора операций, реализация которых отличается в зависимости от его логического состояния (отсюда и имя).
Стратегия также возможна, если целью become
является явное переключение алгоритма (аналогично выбору процедуры сжатия для использования при последующем вызове Compress).
Если цель состоит в том, чтобы объединить многочисленные не имеющие состояния (то есть экземпляры объектов без данных), чтобы они могли совместно использоваться и, следовательно, уменьшить количество объектов в памяти, тогда это может быть Flyweight.
И, конечно, представленный здесь слой косвенности является формой Прокси.
Скажите нам, что является намерением кода, и мы все сможем обеспечить лучшую обратную связь.