|
|
(10 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| O padrão "state" permite que um objecto altere o seu comportamento quando o seu estado muda.
| | #REDIRECT [[ist:State Pattern (padrão de desenho)]] |
| | |
| ==Estrutura==
| |
| O padrão ''state'' tem a seguinte estrutura de classes:
| |
| | |
| [[Image:state-dpcd.png|500px]] | |
| | |
| ==Exemplos==
| |
| | |
| ===Porta automática===
| |
| | |
| A porta automática pode estar en vários estados que determinam a sua resposta a estÃmulos. Os vários estados são "Closed" (porta fechada); "Closing" (porta a fechar); "StayOpen" (permanentemente aberta); "Open" (aberta); "Opening" (porta a abrir). Os estÃmulos são "click" (botão de abrir/fechar premido); "complete" (fim do ciclo de abertura/fecho); "timeout" (passagem de tempo num dado estado).
| |
| | |
| [[Image:state-dp-state-diagram-door.png|500px]]
| |
| | |
| A uma aplicação de teste que simula alguns estÃmulos aos quais a porta deve responder.
| |
| | |
| public class StatePattern {
| |
| public static void main(String[] args) {
| |
| Door door = new Door(); // Closed
| |
| door.click();
| |
| door.complete();
| |
| door.timeout();
| |
| door.click();
| |
| door.status();
| |
| }
| |
| }
| |
| | |
| ===Máquina de bombons===
| |
| | |
| [[category:OOP]]
| |