zoukankan      html  css  js  c++  java
  • 大话设计模式 状态模式

    package org.ustc.statemode;
    
    public class Work {
    	private State state;
    	private boolean isFinished ;
    	
    	public Work() {
    		state = new MoningState();
    		setFinished(false);
    	}
    	public State getState() {
    		return state;
    	}
    	public void setState(State state) {
    		this.state = state;
    	}
    	public int getHour() {
    		return hour;
    	}
    	public void setHour(int hour) {
    		this.hour = hour;
    	}
    	private int hour;
    	public void writeProgram(){
    		state.writeProgram(this);
    	}
    	public void setFinished(boolean isFinished) {
    		this.isFinished = isFinished;
    	}
    	public boolean isFinished() {
    		return isFinished;
    	}
    }
    package org.ustc.statemode;
    
    public interface State {
    	public void writeProgram(Work w);
    }
    
    package org.ustc.statemode;
    
    public class MoningState implements State {
    	
    
    	@Override
    	public void writeProgram(Work w) {
    		// TODO Auto-generated method stub
    		if(w.getHour()<12)
    			System.out.println("精力充沛,time:"+w.getHour());
    		else{
    			w.setState(new AfternoonState());
    			w.writeProgram();
    		}
    	}
    
    	
    
    }
    

    package org.ustc.statemode;
    
    public class AfternoonState implements State {
    
    	@Override
    	public void writeProgram(Work w) {
    		// TODO Auto-generated method stub
    		if(w.getHour()<17)
    			System.out.println("下午犯困");
    		else{
    			w.setState(new EveningState());
    		w.writeProgram();
    		}
    	}
    
    }
    
    
    
    package org.ustc.statemode;
    
    public class EveningState implements State {
    
    	@Override
    	public void writeProgram(Work w) {
    		// TODO Auto-generated method stub
    		if(w.isFinished()==true){
    			w.setState(new RestState());
    			w.writeProgram();
    		}else{
    			if(w.getHour()<20)
    				System.out.println("好累");
    			else{
    				w.setState(new SleepState());
    				w.writeProgram();
    			}
    		}
    	}
    
    }
    
    
    
    package org.ustc.statemode;
    
    public class RestState implements State {
    
    	@Override
    	public void writeProgram(Work w) {
    		// TODO Auto-generated method stub
    		System.out.println("收工 下班咯");
    	}
    
    }
    
    
    
    package org.ustc.statemode;
    
    public class SleepState implements State {
    
    	@Override
    	public void writeProgram(Work w) {
    		// TODO Auto-generated method stub
    		System.out.println("不行了睡着了"+w.getHour());
    	}
    
    }
    
    
    
    package org.ustc.statemode;
    
    public class Main {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Work work = new Work();
    		//work.setHour(20);
    		//work.setHour(9);
    //		work.setHour(14);
    		work.setFinished(true);
    		work.setHour(20);
    		work.writeProgram();
    	}
    
    }
    
    
    
    
    


  • 相关阅读:
    【Yii2.0】1.5 Yii2.0新特性记录
    【PHP7.0】PHP7.0 小知识点摘录
    【PHP7.0】PHP7.0学习笔记目录
    【Yii2.0】1.4 Apache2.4.23基于主机名的虚拟主机配置
    【Yii2.0】2.2 Yii2.0 Basic代码中路由链接被转义的处理
    【Yii2.0】1.3 MySQL5.7.15修改root密码
    [Leetcode 106] 130 Surrounded Regions
    [Leetcode 105] 90 Subsets II
    [Leetcode 104] 131 Palindrome Partitioning
    [Leetcode 103] 37 Sudoku Solver
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3055226.html
Copyright © 2011-2022 走看看