`

状态模式应用1(去掉过多的if...else)

 
阅读更多
状态接口类
package com.fczfr.pattern.behavior.state.sample1;

public interface State {
	// 状态0 
	public final static int STATUS_0 = 0;  
	// 状态1 
	public final static int STATUS_1 = 1; 
	
	public void sampleOperation();
	
	public int getStatus();
}


状态0实现类
package com.fczfr.pattern.behavior.state.sample1;

public class State0 implements State {

	public void sampleOperation() {
		System.out.println("当前状态为状态0");
	}

	public int getStatus() {
		return this.STATUS_0;
	}
	
	
}

状态1实现类
package com.fczfr.pattern.behavior.state.sample1;

public class State1 implements State {

	public void sampleOperation() {
		System.out.println("当前状态为状态1");
	}

	public int getStatus() {
		return this.STATUS_1;
	}
}


状态工厂类:
package com.fczfr.pattern.behavior.state.sample1;

import java.util.ArrayList;
import java.util.List;

public class StateFactory {
	List<State> stateList = null;
	public StateFactory(){
		stateList = new ArrayList<State>();
		stateList.add(new State0());
		stateList.add(new State1());
	}
	
	public State getState(int status){
		for(State state:stateList){
			if(state.getStatus()==status){
				return state;
			}
		}
		return null;
	}
}

最后,编写客户端测试类
package com.fczfr.pattern.behavior.state.sample1;

public class Client {

	public static void main(String[] args) {
		StateFactory factory = new StateFactory();
		factory.getState(State.STATUS_1).sampleOperation();
	}

}

运行结果:

当前状态为状态1


该模式,只要传递一个静态的状态,就可以执行该需要状态的执行类。
分享到:
评论

相关推荐

    用InputBox和If then Else,if elseif,SelectCase三种方法判断分支函数的应用程序,.net源代码.

    1. If...Then...Else语句: ```vb.net If userInput &gt; 0 Then Console.WriteLine("输入的数字是正数.") Else Console.WriteLine("输入的数字不是正数.") End If ``` 2. If...ElseIf...Else语句: ```vb.net...

    if...else....rar_If...

    在TX-1C学C语言的教程中,`if...else`语句是初学者必须掌握的基础知识。 `if`语句的基本形式如下: ```c if (条件) { // 当条件为真(非零)时执行的代码 } ``` 这里的“条件”通常是一个表达式,其结果可以是`...

    51单片机-for语句do...while语句if...else...语句产生随机数rand()C语言常用基本语句例程源码

    51单片机-C语言for语句do...while语句if...else...语句产生随机数rand()常用基本语句例程源码 do...while语句 for语句 if...else...语句 switch-case-break语句 while与do...while区别 while语句 不同类型数据的差异...

    if...else...恋爱代码

    在编程世界里,`if...else`语句是条件判断的基础,它允许程序根据特定条件执行不同的代码块。在这个特殊的“if...else...恋爱代码”中,我们可以将它看作是对现实生活中情感关系的一种趣味性模拟。这个描述实际上是...

    C语言中分支结构:if语句、if-else语句和switch语句的使用方法.docx

    C语言中分支结构:if语句、if-else语句和switch语句的使用方法 C语言中分支结构是一种非常基本但非常重要的编程结构,它允许程序根据条件执行不同的代码块。在C语言中,分支结构有三种基本类型:if语句、if-else...

    WEB开发 之 JavaScript If...Else 语句.docx

    本文主要讲解了JavaScript中的四种主要条件语句:if语句、if...else语句、if...else if...else语句以及switch语句。 1. **if语句**: if语句用于检查一个条件,如果条件为真(true),则执行特定的代码块。基本...

    if_else_ifelse_If..._

    本文将深入探讨 `if`、`else` 以及 `if...else` 结构在 C 和 C++ 中的应用,以及它们如何帮助程序员实现复杂的决策流程。 首先,`if` 语句是基于一个布尔表达式的检查。如果这个表达式的结果为真(非零),则执行 `...

    if.when.else.zip_If..._stems3hq_vhdl_数码管 使能端_数码管使能端

    标题中的"if.when.else.zip_If..._stems3hq_vhdl_数码管 使能端_数码管使能端"暗示了我们正在处理一个基于条件语句(if...when...else)的VHDL设计,用于控制数码管的显示。"stems3hq"可能是某种项目或技术的特定...

    javaCC语法分析(while、if...else...、for互相嵌套).pdf

    1. **选项(Options)**:`JDK_VERSION`设置为"1.5"表示该解析器兼容Java 1.5及以上版本,而`DEBUG_PARSER`设置为`true`意味着在运行时将启用调试模式。 2. **PARSER_BEGIN/END**:定义解析器的开始和结束。`...

    pri_encoder_using_if.rar_If..._pri

    end else if (pri_in[1]) begin pri_out = 3'b001; // A1 is highest priority end else if (pri_in[0]) begin pri_out = 3'b000; // A0 is highest priority end else begin pri_out = 3'bxxxx; // No input ...

    jingziqi_C语言_If..._800行游戏_

    本文将详细解析这个程序的设计思路、关键结构以及if...else语句在游戏逻辑中的应用。 首先,我们来看C语言在游戏开发中的运用。C语言作为一种基础且高效的编程语言,是许多游戏开发者的首选。它的语法简洁,运行...

    if..else if...else...的用法.cpp

    c

    单片机资料c源码if.else.语句单片机资料c源码if.else.语句

    单片机资料c源码if.else.语句单片机资料c源码if.else.语句提取方式是百度网盘分享地址

    delphi if else 语句使用方法

    在实际开发过程中,`IF...ELSE`语句的应用非常广泛,例如: - **用户权限管理**: 根据用户角色的不同,显示不同的界面元素。 - **数据验证**: 检查输入的数据是否符合预期格式或范围。 - **流程控制**: 根据用户的...

    vue.js v-if使用,vue.js if...else if使用

    在实际开发中,`v-if`和`v-else-if`广泛应用于各种场景,如条件性加载组件、用户权限判断、数据状态展示等。它们是构建响应式UI的利器,使得代码更加简洁和易于维护。 ### 示例 在提供的`v-if.html`文件中,可能...

    if.rar_If..._if嵌套

    在编程领域,`if` 和 `if...else` 结构是条件控制的基础,它们允许程序根据不同的条件执行不同的代码块。而 `if` 的嵌套则是在这些基础之上的一种更复杂的逻辑控制方式,用于处理多层条件判断。下面将详细阐述 `if` ...

    if.rar_If..._跳转

    - **避免过多的if嵌套**:过多的嵌套可能导致代码难以阅读和理解,可以尝试重构代码,使用策略模式或函数组合来简化逻辑。 - **使用开关(switch)**:当有多个条件分支时,`switch` 语句通常比多个 `if...else if...

    三元运算符的玩法 if else if

    ### 三元运算符的玩法 if else if 在编程领域,条件语句是实现程序逻辑控制的重要手段之一。其中,“if...else...”结构是最基本的条件分支结构,而三元运算符则提供了一种更为简洁的方式来表达类似的逻辑判断。...

    step1.rar_If...

    1. 定义词法规则:定义`if`和`else`的关键字,以及其他相关元素(如括号、分号等)的词法规则。 2. 创建状态机:设计一组状态来跟踪当前解析的位置,以及期望遇到的下一个词法单元。 3. 读取输入:逐字符读取源代码...

Global site tag (gtag.js) - Google Analytics