mybatis的xml使用ognl呼叫靜態java類方法時省略包名並支援lambda取例項類中列名
阿新 • • 發佈:2020-12-14
場景如上:在一個方法中需要判斷很多種情況,比如:上午12點之前:精神百倍,13點:餓了午飯,17點:下午狀態不錯,繼續努力等等。正常情況我們是用好多if else 來做判斷。
這樣有兩個弊端:
1.程式碼長度太長。
2.不利於維護,每次有情況變換需要考慮太多。
使用狀態模式:
public interface State { public void doAction(Context context); }
public class StartState implements State { public void doAction(Context context) { System.out.println("Player is in start state"); context.setState(this); } public String toString(){ return "Start State"; } }
public class StopState implements State { public void doAction(Context context) { System.out.println("Player is in stop state"); context.setState(this); } public String toString(){ return "Stop State"; } }
public class Context { private State state; public Context(){ state = null; } public void setState(State state){ this.state = state; } public State getState(){ return state; } }
public class StatePatternDemo { public static void main(String[] args) { Context context = new Context(); StartState startState = new StartState(); startState.doAction(context); System.out.println(context.getState().toString()); StopState stopState = new StopState(); stopState.doAction(context); System.out.println(context.getState().toString()); } }