STATE DESIGN PATTERN IN JAVA AND UML

In State pattern a class behavior changes based on its state. This type of design pattern comes under behavior pattern. In State pattern, we create objects which represent various states and a context object whose behavior varies as its state object changes.

State.java
package SMD6;

public interface State {

 public void doAction(Patient cureness);
 
}
Patient.java
package SMD6;

public class Patient {

 private State state;
 
 public  Patient() {
  state = null;
 }

 public State getState() {
  return state;
 }

 public void setState(State state) {
  this.state = state;
 }
 
}
Cured.java
package SMD6;

public class Cured implements State {

 public void doAction(Patient cureness) {
  System.out.println("CuredState \n Patient is cured and he paying Bill");
  cureness.setState(this);
   
 }

}
NotCured.java
package SMD6;

public class NotCured implements State{

 public void doAction(Patient cureness) {
  System.out.println("NotCured State \n Patient is not cured and he is going under diagnosed again");
  cureness.setState(this);
   
 }
 
}
StateMain.java
package SMD6;

public class StateMain {

 public static void main(String[] args) {
  Patient cureness = new Patient();
  
  Cured cured = new Cured();
  cured.doAction(cureness);
  
  NotCured notcured = new NotCured();
  notcured.doAction(cureness);
  
 }
 
}

Comments