No Head First Design Patterns, ele ensina o padrão de estratégia usando um exemplo do Duck, em que diferentes subclasses do Duck podem ser atribuídas a um determinado comportamento em tempo de execução. Pelo meu entendimento, o objetivo do padrão de estratégia é alterar o comportamento de um único objeto em tempo de execução, mas eles estão usando a herança do Duck para alterar o comportamento de vários tipos de Duck.
Relevância?
A herança de contexto do Duck é irrelevante para o padrão de estratégia ou a variação de tipos de Duck e também a variação de seus comportamentos é uma boa razão para empregar o padrão de estratégia? As situações em que você precisa variar ambas constituem um bom motivo para usar o padrão de estratégia? Por que eles incluiriam isso como exemplo de padrão de estratégia?
Um exemplo mais simples
Eu poderia simplificar ainda mais este exemplo, tendo apenas uma classe Duck (sem classes derivadas)? Em seguida, ao implementar um objeto duck, é possível atribuir comportamentos diferentes com base em determinadas circunstâncias que não dependem de seu próprio tipo de objeto. Por exemplo: FlyBehavior muda com base no clima ou QuackBehavior muda com base na hora do dia ou na fome de um pato. Sei que isso resolveria um problema diferente daquele do livro, mas o que estou procurando é um exemplo relevante de padrão de estratégia para recorrer.
Meu exemplo acima também constituiria o padrão de estratégia?
Editar:
Consegui encontrar dois exemplos mais simples de padrões de estratégia que aderem mais estritamente a serem apenas padrões de estratégia sem herança de contexto: Hunter.java e solver.py .