首页 > 编程语言 >java状态模式

java状态模式

时间:2023-12-26 18:03:00浏览次数:35  
标签:状态 java void state 模式 State context handle public

1 定义一个接口
 2 public interface State {
 3     public void handle();
 4 }
 5 
 6 
 7 /**
 8  *具体的状态角色(下单)
 9  * Created by  Administrator
10  */
11 public class PlaceAnOrder implements State {
12     //具体化状态的行为
13     @Override
14     public void handle() {
15         Log.d("doAction","下单");
16     }
17 }
18 
19 /**
20  *具体的状态角色(付款)
21  * Created by  Administrator
22  */
23 public class PayTheOrder implements State {
24     @Override
25     public void handle() {
26         Log.d("doAction","付款");
27     }
28 }
29 
30 /**
31  *具体的状态角色(发货)
32  * Created by  Administrator
33  */
34 public class DeliverGoods implements State {
35     @Override
36     public void handle() {
37         Log.d("doAction","发货");
38     }
39 }
40 
41 public class Context {
42     private State state;
43     public Context() {
44     }
45 
46     public void setState(State state) {
47         this.state = state;
48     }
49 
50     public void doAction() {
51         this.state.handle();
52     }
53 }

客户端调用

1 Context context=new Context();
 2 //下单
 3 State placeanOrder=new PlaceAnOrder();
 4 context.setState(placeanOrder);
 5 context.doAciton();
 6 
 7 //付款
 8 State paytheOrder=new PayTheOrder();
 9 context.setState(paytheOrder);
10 context.doAciton();
11 
12 //发货
13 State  deliverGoods=new DeliverGoods();
14 context.setState(deliverGoods);
15 context.doAciton();

 



标签:状态,java,void,state,模式,State,context,handle,public
From: https://blog.51cto.com/u_2820398/8985945

相关文章

  • Java注解
    Java注解用于为Java代码提供元数据可以把注解当作一个标签注解的定义:public@interfaceAAA{}此时就相当于创建了一个名为AAA的注解(标签)注解的应用:@AAApublicclasstest{}此时就是把这个......
  • 写写java中的optional
    当我们写代码的时候经常会碰见nullpointer,所以在很多情况下我们需要做各种非空的判断。JDK8中引入了optional,他是一个包装好的类,我们可以把对象传入optional对象中,接下来就可以在optional中进行安全的消费一般使用的都是optional的方法ofNullable,这样当对象为null的时候会顺利执......
  • 十八,JAVA 多线程,网络编程
    线程的休眠//线程的休眠try{    Thread.sleep(3000);//毫秒 }catch(InterruptedExceptione){ e.printStackTrace();}//第二种方式:try{    TimeUnit.MINUTES.sleep(3);}catch(InterruptedExceptione){ e.printStackTra......
  • vue3学习之Pinia状态管理
    状态管理 src/views/Pinia.vue<scriptsetup>import{ref}from"vue";import{storeToRefs}from"pinia";import{useCounterStore}from"../stores/counter";import{useTodos}from"../stores/todos";//可......
  • 虚拟技术-时分复用、空分复用、进程状态切换、程序生成过程、进程同步、虚拟内存
    虚拟技术把一个物理实体转换为多个逻辑实体。主要有两种虚拟技术:时(时间)分复用技术   空(空间)分复用技术多进程与多线程:多个进程能在同一个处理器上并发执行使用了 时分复用技术,每个进程轮流占用处理器,每次只执行一小个时间片并快速切换。虚拟内存使用了空分复用......
  • 重温Java修饰符
    Java语言修饰符大致分为两类,即访问权限修饰符和非访问权限修饰符。一、访问权限修饰符public:共有访问。对所有的类都可见。protected:保护型访问。对同一个包可见,对不同的包的子类可见。default:默认访问权限。只对同一个包可见,注意对不同的包的子类不可见。private:私有访问。......
  • 7. Java 内存模型
    Java内存模型Java内存模型(JavaMemoryModel)的主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量值存储到内存和从内存中取出变量值这样的底层细节1.主内存与工作内存Java内存模型规定了所有的变量都存储在主内存(MainMemory)中(虚拟机内存的一部分)。每条线程......
  • java接口自动化系列(01):自动化测试框架设计(入门版)
     前言想必很多测试小伙伴自动化都是用的python吧?从当前测试招聘要求可以看到,测试开发就是全栈要求,要想在职场有竞争力,就得多个技术方向逐个提升;而和自动化、测开、性能、白盒等都相关的语言就是java,当然,这是基于很多公司项目是java来说的,毕竟Java已经发展了近20年,丰富的周边框架打......
  • java接口自动化系列(02):测试数据文件设计
    说明本次分享的是测试数据存excel中,后续分享测试数据存yaml中常用数据用例数据频繁使用到的值,我们可以放到一个变量中,这样避免修改值的时候大面积修改示例sheet名称:variables解释:标题行每个单词首字母大写,因为代码里面反射会用到解释:字段数据Name:变量名,#{xxx}整体表示变量名Value:变......
  • Java泛型详解
    Java泛型详解转载自:Java中的泛型(两万字超全详解)一、泛型概述1.什么是泛型?为什么要试用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参列表,普通方法的形参列表中,每个形参的数据类型的确定的,而变量是一个参数。在调用普通方法时需要传入对应形参数据类型的......