首页 > 其他 > 详细

设计模式之 状态模式

时间:2021-09-07 02:47:41      阅读:12      评论:0      收藏:0      [点我收藏+]

状态模式指给对象定义不同的状态,并为不同的状态定义不通的行为,在对象的状态发生变换时自动切换状态行为。

状态模式把受环境改变的对象行为包装在不同的对象里,用于让一个对象在其内部状态改变时,行为也随之改变。

 

技术分享图片

(1)定义抽象状态

public abstract class AbstractState{
    public abstract void action(Context context);
}

(2)定义状态

public class HolidayState extends AbstractState{
    private  final static Log logger = LogFactory.getLog(this.getClass());

    @Override
    public void action(Context context) {
        logger.info("state change to holiday state");
    }
}

public class WorkState extends AbstractState{
    private  final static Log logger = LogFactory.getLog(this.getClass());

    @Override
    public void action(Context context) {
        logger.info("state change to work state");
    }
}

(3)定义上下文用于存储状态和执行不同状态下的行为

public class Context{
    private AbstractState state;
    public Context(AbstractState state){
        this.state = state;
    }
    
    public void setState(AbstractState state) {
        this.state = state;
    }
    
    public AbstractState getState() {
        return state;
    }
    
    public void action(){
        this.state.action(this);
    }
}

(4)使用状态模式

public static void main(String[] args){
    Context context = new Context(new WorkState());
    context.action();
    
    context.setState(new HolidayState());
    context.action();
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


技术分享图片

设计模式之 状态模式

原文:https://www.cnblogs.com/betterwgo/p/15234562.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!