Compartilhamento de tecnologia

Padrão de estado

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Padrão de estado

definição

Também chamado de Padrão de Máquina de Estado
Ao definir diferentes classes de estado para encapsular comportamentos relacionados a estados específicos e transferir a lógica de julgamento de estado para uma série de classes que representam estados diferentes, a lógica de julgamento complexa é simplificada.

  • O padrão de estado separa estado e comportamento, permitindo que um objeto mude seu comportamento quando seu estado interno muda.
  • Cada estado corresponde a uma subclasse, distribuindo assim a lógica de transição de estado para as subclasses de estado, reduzindo a interdependência.
  • O cliente geralmente não interage diretamente com o objeto de estado, mas interage com o objeto de estado por meio da classe de ambiente (Contexto).

Cena aplicável

  1. O comportamento de um objeto depende do seu estado e ele deve mudar seu comportamento em tempo de execução com base no estado.
  2. Uma operação contém uma enorme estrutura de múltiplas ramificações, e essas ramificações são determinadas pelo estado do objeto.

Exemplo padrão

Insira a descrição da imagem aqui

No diagrama de estrutura do padrão de estado, geralmente contém as seguintes funções:

  • Contexto (classe de ambiente): Também chamada de classe de contexto, é um objeto com múltiplos estados. Mantenha uma instância da classe de estado abstrata State na classe de ambiente, que define o estado atual.
  • Estado (classe de estado abstrato): usado para definir uma interface para encapsular o comportamento relacionado a um estado específico da classe de ambiente. Os métodos correspondentes a vários estados são declarados na classe de estado abstrato e implementados em subclasses.
  • ConcreteState (classe de estado concreto): É uma subclasse da classe de estado abstrato. Cada subclasse implementa um comportamento relacionado a um estado da classe de ambiente.

IState

public interface IState {
    void handle();
}