设计模式-行为型-状态模式

108 阅读1分钟

简介

状态模式是行为型模式的一种,在状态模式中,一个类的行为会随着其状态改变而改变。在实现过程中,通常会有一个Context类用来承载当前的状态,其会随着状态的改变而改变。在日常生活中,我们的篮球运动员会有进攻和防守两种状态,接下来以此为Demo进行实现:

Demo示例

1.定义运动员的状态接口,然后进攻状态和防守状态两种状态来实现:

public interface PlayerState {
    void doAction(PlayerContext context);
}
public class AttackState implements PlayerState{
    @Override
    public void doAction(PlayerContext context) {
        context.setState(this);
        System.out.println("Player in attack state");
    }

    @Override
    public String toString() {
        return "attack state";
    }
}
public class DefendStates implements PlayerState{
    @Override
    public void doAction(PlayerContext context) {
        context.setState(this);
        System.out.println("player in defend state");
    }

    @Override
    public String toString() {
        return "defend state";
    }
}

2.定义承载状态的上下文

public class PlayerContext {
    private PlayerState state;

    public void setState(PlayerState state) {
        this.state = state;
    }

    public PlayerState getState() {
        return state;
    }
}

3.客户端调用

public class Test {
    public static void main(String[] args) {
        PlayerContext context = new PlayerContext();
        PlayerState attackState = new AttackState();
        attackState.doAction(context);
        System.out.println(context.getState());

        PlayerState defendState = new DefendStates();
        defendState.doAction(context);
        System.out.println(context.getState());
    }
}