状态模式代码举例(java语言版)

前言:在行为受状态约束的时候使用状态模式,而且状态不超过 5 个(谨用)。这里举一个饮水机与水桶的例子

JAVA语言版状态模式

创建状态接口:

public interface BucketState {
    void press();
}

创建状态接口的实现类:

public class BucketStateFull implements BucketState{
    @Override
    public void press() {
        System.out.println("正在倒水");
    }
}

public class BucketStateNull implements BucketState{
    @Override
    public void press() {
        System.out.println("没有水了");
    }
}

创建饮水机实体类:

public class WaterDispenser {
    private int capacity = 5;
    private BucketState bucketState;

    public WaterDispenser(BucketState bucketState) {
        this.bucketState = bucketState;
    }
    
    public void press() {
        capacity--;
        if (capacity <= 0) {
            this.bucketState = new BucketStateNull();
        }
        bucketState.press();
    }
}

使用StatePatternDemo类演示接水饮水机状态改变

public class StatePatternDemo {
    public static void main(String[] args) {
        WaterDispenser waterDispenser =new WaterDispenser(new BucketStateFull());
        for(int i=0;i<5;i++){
            waterDispenser.press();
        }
    }
}

输出结果:

正在倒水
正在倒水
正在倒水
正在倒水
没有水了

猜你喜欢

转载自blog.csdn.net/qq_35386002/article/details/89336243