@Overridepublic void doRequirmentGathering(){System.out.println("'RequirmentGathering' has been started .............");

System.out.println("'RequirmentGathering' has been finished by 7 days .............");

}

@Overridepublic void doDesignAndArchitecture(){System.out.println("Cannot do 'DesignAndArchitecture' because Project is in 'RequirmentGathering' Phase...");

}

@Overridepublic void doDevelopement(){System.out.println("Cannot do 'developement' because Project is in 'RequirmentGathering' Phase...");

}

@Overridepublic void doTesting(){System.out.println("Cannot do 'Testing' because Project is in 'RequirmentGathering' Phase...");

}

}

DesignAndArchitectureState.java

public class DesignAndArchitectureState implements ProjectState
{@Overridepublic void doRequirmentGathering(){System.out.println("'RequirmentGathering'[Clarification of Requirement] you can do in ''DesignAndArchitecture'' Phase .......");}

@Overridepublic void doDesignAndArchitecture(){System.out.println("'DesignAndArchitecture' has been started .............");

System.out.println("'DesignAndArchitecture' has been finished by 10 days .............");}

@Overridepublic void doDevelopement(){System.out.println("Cannot do 'developement' because Project is in 'DesignAndArchitecture' Phase...");

}

@Overridepublic void doTesting(){System.out.println("Cannot do 'Testing' because Project is in 'DesignAndArchitecture' Phase...");

}

}

DevelopementState.java

public class DevelopementState implements ProjectState
{@Overridepublic void doRequirmentGathering(){System.out.println("Cannot do 'RequirmentGathering' because Project is in 'Developement' Phase...");}

@Overridepublic void doDesignAndArchitecture(){System.out.println("'DesignAndArchitecture'[Clarification of DesignAndArchitecture] you can do in ''Developement'' Phase .......");}

@Overridepublic void doDevelopement(){System.out.println("'Developement' has been started .............");

System.out.println("'Developement' has been finished by 40 days .............");

}

@Overridepublic void doTesting(){System.out.println("Cannot do 'Testing' because Project is in 'Developement' Phase...");

}

}

TestingState.java

public class TestingState implements ProjectState

{

@Override

public void doRequirmentGathering()

{

System.out.println("Cannot do 'RequirmentGathering' because Project is in 'Testing' Phase...");

}

@Override

public void doDesignAndArchitecture()

{

System.out.println("Cannot do 'DesignAndArchitecture' because Project is in 'Testing' Phase...");

}

@Override

public void doDevelopement()

{

System.out.println("'Developement'[Bug fixes] you can do in ''Testing'' Phase .......");

}

@Override

public void doTesting()

{

System.out.println("'Testing' has been started .............");

System.out.println("'Testing' has been finished by 20 days .............");