首页 > 其他分享 >软件设计-状态模式

软件设计-状态模式

时间:2023-10-31 17:44:18浏览次数:35  
标签:状态 Context index 软件设计 void 模式 state context public

public class 状态模式 {
    public static void main(String[] args)
    {
        Context context=new Context();
        context.Request();
        context.Request();
        context.Request();
        //System.out.println(context.getState());
        context.Request();
        context.Request();
    }
}
class Context{
    private int index;
    private State state;
    public Context()
    {
        index=3;
        state=new StateA();
    }
    public void setIndex(int index)
    {
        this.index=index;
    }
    public void setState(State state)
    {
        this.state=state;
    }
    public int getIndex()
    {
        return index;
    }
    public State getState()
    {
        return state;
    }
    public void Request()
    {
        state.Handle(this);
    }
}
interface State{
    public void Handle(Context context);
}
class StateA implements State{
    @Override
    public void Handle(Context context)
    {
        int index=context.getIndex();
        if(index>=1)
        {
            System.out.println("购买成功");
            index=index-1;
            context.setIndex(index);
            if(index==0)
            {
                context.setState(new StateB());
            }
        }else
            System.out.println("购买失败");
    }

}
class StateB implements State{
    @Override
    public void Handle(Context context)
    {
        int index=context.getIndex();
        if(index==0)
        {
            System.out.println("购买失败,需要补货");

            index=index+5;
            System.out.println("补货成功,请重新购买");
            context.setIndex(index);
            context.setState(new StateA());
        }
    }

}

运行结果

 

标签:状态,Context,index,软件设计,void,模式,state,context,public
From: https://www.cnblogs.com/cinan/p/17800838.html

相关文章

  • Ubuntu下编译最新版本全志开源FEL模式工具sunxi-tools
    1、sunxi-tools介绍sunxi-tools是一组用于全志SoC系列芯片的开源命令行工具,全志的SoC一般以sun开头,x为数字,以i结尾。对于sun4i,sun5i,sun6,sun8i,sun9i.等等系列都可以使用这个工具。比如手上的这个板子是H616,它的名字是sun50i-H616。sunxi-tools是一组工具集,这组工具可以用于对全......
  • 检查MySQL运行状态
    1.查看MySQL的进程是否存在。打开终端或命令提示符,执行命令:psaux|grepmysql。如果MySQL的进程存在,则表示MySQL服务正在运行。2.通过服务管理工具检查MySQL服务状态。在Linux系统中,可以使用service或systemctl命令,例如:servicemysqlstatus或systemctlstatusmysql。在Windo......
  • sqlserver查询数据库状态SQL
    --连接数SELECTcount(0)asConnectCountfromsys.dm_exec_connections--死锁数量selectcntr_valuefromsys.dm_os_performance_counterswherecounter_name='NumberofDeadlocks/sec'andinstance_name='_Total'--缓存命中率selectcntr......
  • React Native expo项目设置app顶部的状态栏
       importReactfrom'react'import{createNativeStackNavigator}from'@react-navigation/native-stack'import{getRouter}from'./config'import{ErrorBoundary}from'../component/light'importVDebug,{initT......
  • 设计模式(一)
    1设计模式什么是设计模式?一个问题通常由n种解法,其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式。设计模式有20多种,对应20多种软件开发中会遇到的问题。关于设计模式的学习,主要学什么?1)解决什么问题?2)怎么写?2单例设计模式简介:确保一个类只有一个对......
  • 设计模式(十)外观
    一、定义为子系统中的一组接口提供一个一致的入口,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式是一种结构型模式。二、描述包含以下两个角色:1、Facade(外观角色):在客户端可以调用它的方法,在外观角色中可以知道相关的(一个或多个)子系统的功能和责任;在......
  • Redis集群模式incr保证原子性的原理
    1.主要是redis的key会解析到固定的主机上,比如集群上有host1,host2,host3;然后key1可能会解析后发现是要发到host2上,则在host2正常的情况下(有点像kafkarebalance;consumer处理哪些分区),key1会一直在host2上进行操作;因此在redis集群正常情况下不会出现对key1第一次incr是在host2,第二次......
  • 设计模式-享元模式
    importjava.nio.channels.Pipe;publicclass享元模式{publicstaticvoidmain(String[]args){pieceFactoryfactory=newpieceFactory();PiecewhitePiece=factory.getPiece(0);PiecewhitePiece1=factory.getPiece(1);Pie......
  • 查看调整cpu频率及模式
    使用cpufrequtils查看调整cpu频率及模式cpufrequtils是一个查看和修改CPU频率GHz的工具有些物理服务器使用默认频率进行运行,这时可以使用该工具进行就该CPU的核心频率安装:aptinstallcpufrequtilsyuminstallcpufrequtils使用:#查看全部核心详细信息cpufreq-info#查......
  • 查看调整cpu频率及模式
    使用cpufrequtils查看调整cpu频率及模式cpufrequtils是一个查看和修改CPU频率GHz的工具有些物理服务器使用默认频率进行运行,这时可以使用该工具进行就该CPU的核心频率安装:aptinstallcpufrequtilsyuminstallcpufrequtils使用:#查看全部核心详细信息cpufreq-info#......