State
Vantagens
-
Confina o comportamento específico de estados e particiona o comportamento para estado diferentes. O padrão State coloca todo o comportamento associado com um estado particula em um objeto. Como todo código específicos a um estado reside numa subclasse de State, novos estados e transições de estado podem ser facilmente adicionados pela definição de novas subclasses.
-
Oferece uma maneira melhor para estrutur o código específico de estados. A lógica que determina as transições de estado não se localiza em comandos monolíticos if ou switch, mas é particionada entre as subclasses de State. O encapsulamento de cada transição de estado e ação associada em uma classe eleva a idéia de um estado de execução ao status de um objeto propriamente dito. Isso impõe uma estrutura ao código e torna a sua intenção mais clara.
-
Torna explícitas as transições de estado. Quando um objeto define o seu estado corrente unicamente em termos de valores de dados internos, suas transições de estado não têm representação explícita, elas apenas aparecem como atribuições de valores a algumas variáveis. A introdução de objetos separados, para estados diferentes, torna as transições mais explícitas. Os objetos State também podem proteger o Context de estados internos inconsistentes porque, da perspectiva do Context, as transições de estado são atômicas – elas acontecem pela revinculação (rebinding) de uma variável (a variável que contém o objeto State de Context), e não de várias.