设计模式-状态设计模式

1.定义

对于某个操作,由于其状态的不同,表现出的行为会不同(如遥控器进行音量增加的操作,在电视是开机状态下是可以调节音量的,而在关机状态不会有任何反应)

2.示例

状态模式.png
public class User {
    OperateFunction operateFunction = new LogoutState();

    /**
     * 设置用户状态
     * @param operateFunction
     */
    public void setState(OperateFunction operateFunction) {
        this.operateFunction = operateFunction;
    }

    public void commit() {
        operateFunction.commit();
    }

    public void foward() {
        operateFunction.foward();
    }
}
public interface OperateFunction {
    void commit();
    void foward();
}

public class LoginState implements OperateFunction{
    @Override
    public void commit() {
        System.out.println("评论");
    }

    @Override
    public void foward() {
        System.out.println("转发");
    }
}
public class LogoutState implements OperateFunction{
    @Override
    public void commit() {
        System.out.println("去登录");
    }

    @Override
    public void foward() {

        System.out.println("去登录");
    }
}

public class Client {
    public static void main(String[] args) {
        User user = new User();
        user.commit();//请登录
        user.foward();//请登录
        //设置登录状态
        user.setState(new LoginState());
        user.commit();//评论
    }
}

3.使用场景

Android系统的wifi设置页面

4.总结

状态设计模式是在特定场景下,减少if...else的判断逻辑,增加代码的可维护性和扩展性

你可能感兴趣的:(设计模式-状态设计模式)