public function writeProgram(Work $w)
 {
     if ($w->finish) {
         $w->setState(new RestState());
         $w->writeProgram();
     } else {
         if ($w->hour < 21) {
             echo sprintf('当前时间:%s 点 加班哦,疲惫至极%s', $w->hour, PHP_EOL);
         } else {
             $w->setState(new SleepingState());
             $w->writeProgram();
         }
     }
 }
 public function writeProgram(Work $w)
 {
     if ($w->hour < 13) {
         echo sprintf('当前时间:%s 点 饿了,午饭;犯困,午休。%s', $w->hour, PHP_EOL);
     } else {
         $w->setState(new AfternoonState());
         $w->writeProgram();
     }
 }
 public function writeProgram(Work $w)
 {
     if ($w->hour < 17) {
         echo sprintf('当前时间:%s 点 下午状态还不错,继续努力%s', $w->hour, PHP_EOL);
     } else {
         echo $w->setState(new EveningState());
         $w->writeProgram();
     }
 }
 public function writeProgram(Work $w)
 {
     if ($w->hour < 12) {
         echo sprintf('当前时间:%s 点 上午工作,精神百倍%s', $w->hour, PHP_EOL);
     } else {
         $w->setState(new NoonState());
         $w->writeProgram();
     }
 }