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

java状态模式

时间:2023-12-17 16:58:35浏览次数:44  
标签:状态 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://www.cnblogs.com/gide/p/17909305.html

相关文章

  • 我是如何解决java.security.cert.CertPathValidatorException异常的
    在rocky8.5上,有个jdk8跑的程序连接windows上SQLServer2012失败了,环境如下:[zcm@rockymicroService]$cat/etc/redhat-releaseRockyLinuxrelease8.5(GreenObsidian)[root@rockysecurity]#java-versionopenjdkversion"1.8.0_302"OpenJDKRuntimeEnvironment(......
  • Java-与斐波那契数列相关的变体问题
    变体问题指的是提问的方式不一样了,但是解决问题的方法还是用斐波那契数列来解。——写在前面的话。一、变体1-兔子问题1.问题描述第一个月,有一对未成熟的兔子第二个月上述的一对兔子成熟第三个月,他们能产下一对小兔子所有兔子遵循相同规律,求第n个月的兔子个数2.分析例子假设我要求......
  • 23种设计模式——模板模式
    今天我们来学习23种设计模式中的模板模式。模板模式需要注意抽象类与具体子类之间的协作。它用到了虚函数的多态性技术以及“不用调用我,让我来调用你”的反向控制技术。概念:模板模式是定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法......
  • java实现二叉树前序搜索输出深度完整代码
    importjava.util.Scanner;//1:无需package//2:类名必须Main,不可修改classTreeNode{publicintval;publicTreeNodeleft;publicTreeNoderight;publicTreeNode(intval){this.val=val;this.left=null;this.right=null;}}p......
  • 无涯教程-Java - boolean startsWith(String prefix, int toffset)函数
    判断字符串是否以prefix开头。booleanstartsWith-语法这是此方法的语法-publicbooleanstartsWith(Stringprefix,inttoffset)这是参数的详细信息-prefix   -要匹配的前缀。toffset  -从何处开始查找字符串。booleanstartsWith-返回值如果参数表示......
  • 涉及到 List 集合的查询优化时,通常需要考虑集合的大小、查询的复杂度以及数据访问的模
    Java开发中,当涉及到List集合的查询优化时,通常需要考虑集合的大小、查询的复杂度以及数据访问的模式。以下是一些常见的优化技巧。使用StreamAPI进行并行查询StreamAPI可以很容易地并行化查询操作,这对于大规模数据集的查询非常有用。以下是一个并行查询的示例:importjava.ut......
  • 无涯教程-Java - boolean startsWith(String prefix)函数
    判断字符串是否以prefix开头。booleanstartsWith-语法publicbooleanstartsWith(Stringprefix)这是参数的详细信息-prefix  - 要匹配的前缀。booleanstartsWith-返回值如果是以prefix开头,则返回true,否则为false。booleanstartsWith-示例importjava.io.*......
  • 无涯教程-Java - split(String regex, int limit)函数
    将字符串拆分成一个数组。String[]split-语法publicString[]split(Stringregex,intlimit)这是参数的详细信息-regex   -定界的正则表达式。limit   -输出阈值,这意味着要返回多少个字符串。String[]split-返回值它返回通过将字符串拆分为字符串......
  • Java医院3D人体智能导诊系统源码 Uniapp+springboot
    “智能导诊”以人工智能手段为依托,为人们提供智能分诊、问病信息等服务,在一定程度上满足了人们自我健康管理、精准挂号等需求。智能导诊可根据描述的部位和病症,给出适合病症的科室参考。智慧导诊页面会显示男性或女性的身体结构图,可切换正面/背面。通过点击部位选项,选择自己身体不......
  • 无涯教程-Java - String replaceFirst(String regex, String replacement)函数
    使用replacement替换第一个匹配的字符串。StringreplaceFirst-语法publicStringreplaceFirst(Stringregex,Stringreplacement)这是参数的详细信息-regex       -此字符串要匹配的正则表达式。replacement -将替换找到的表达式的字符串。String......