状态模式

来源:互联网 发布:java培训四月 编辑:程序博客网 时间:2024/06/06 01:26

生活中大部分东西都用容易变的和不容易变的,容易变的我们叫这个东西处于某种状态。比如人睡觉时你不要吵醒他。有时候某种状态影响对象整个的外部表现:像水和冰给人感觉就不是一个东西了,这时候我们就可以用状态模式了:

public class State {    public interface IWaterState {        void printState();    }    public static class IceState implements IWaterState {        @Override         public void printState() {            System.out.println("冰,固态可砸碎");        }    }    public static class WaterState implements IWaterState {        @Override        public void printState() {            System.out.println("水,液态可以喝");        }    }    public static class WaterContext implements IWaterState {//不同的状态用不同类的方法,环境类将其自由变换        private IWaterState mIWaterState;        public void setIWaterState(int i) {            switch (i) {                case 0:                    mIWaterState = new IceState();                    break;                case 1:                    mIWaterState = new WaterState();                    break;            }        }        @Override        public void printState() {            mIWaterState.printState();        }    }    public static void main(String[] args) {        WaterContext waterContext = new WaterContext();        //模拟状态改变        waterContext.setIWaterState(0);        waterContext.printState();        waterContext.setIWaterState(1);        waterContext.printState();    }}输出:冰,固态可砸碎水,液态可以喝 

在用状态模式的时候要区分什么是跟随状态变化的,什么不是。

觉得容易理解的话面向对象的23种设计模式点这里

原创粉丝点击