Como verificar o estado interno de uma classe com o pattern State?

olá pessoal, acompanho a algum tempo o fórum. Sou iniciante e precisava de uma ajuda suas:

Estudando o livro de Design Patterns, eles recomendam utilizar o pattern State para definir o estado de uma classe chamada Pessoa, para eu saber quando a classe já foi salva (usando um método Salvar) ou se foi apenas instanciada com valores que não foram guardados no BD.

Essa classe Pessoa passarei como argumento na chamada de método de outra classe chamada Contrato.

Aqui que esta minha dúvida: A classe Contrato somente deve aceitar classes Pessoa já salvas. Devo tornar o estado da classe Pessoa publica para a classe Contrato verificar isso? Existe outra forma de implementação disso?

Obrigado mesmo.

O ideal é vc criar um método publico getEstado() que retorna o valor de sua variável privada. Sempre pense numa forma de manter o encapsulamento.
Blz! :thumbup:

Criar um get não mantêm encapsulamento.

Estar ‘Salva’ é um conceitod e negócio ou de ifnra-estrutura? Se for de infra-estrutura (salva no banco de dados, por exemplo), creio que você está misturando conceitos (objetos de negócio não devem saber sobre persistência),

Essa matéria é muito interessante pcalcado. Acho que me precipitei ao afirmar que o get mantém o encapsulamento. Valew pela informação! Vivendo e aprendendo!

Demorei pra ler as mensagens, estava acidentado…

Qto ao Salvar, entendo que o obj Pessoa não deva saber como persistir a ele mesmo no BD. Estarei delegando isso a outra classe - DAO. Mas o método Salvar estará nele… Estou na duvida em como gerenciar o estado desta classe Pessoa, pra saber se os dados de uma instancia de Pessoa já foram salvas ou não em um BD. Estou me baseando no pattern State.

Em algumas situações só posso utilizar uma instancia de Pessoa se ela estiver no estado SALVO, por exemplo. É aqui que não sei como descobrir o estado da instancia sem quebrar o encapsulamento.

Estou querendo passar uma instancia de Pessoa como argumento de um método de uma outra classe. Essa outra classe só aceitará Pessoa se ela estiver no estado SALVO.

Não sei se estou viajando demais, mas não sei como saber se a tal classe Pessoa foi instanciada vazia e depois populada com novos dados; Ou se ela foi recuperada do BD e está limpa, sem alterações.

Valeu a atenção.