如何通过key获取value值,键找值!多线程单利模式 3月15日第三版 希望各位路过的高手批评指正 给出更优秀的代码方便后来人...

news/2024/7/4 15:00:54

如何通过key获取value值,键找值!多线程单利模式 3月15日第三版

封装不是很好,希望各位路过的高手批评指正 给出更优秀的代码方便后来人

模拟微软风格的写法,语义极其清晰,上代码

public void Test()
{
ProcessDesignStatusEnum status = new ProcessDesignStatusEnum();
string value = status.流程设计.未提交.value;
string key = status.流程设计.未提交.key;
string getValue = status.ConvertKeyToValue.DefectsLevelValue(1);
}

 

上面的这是使用

如何定义直接看下面的代码

namespace Bll
{
public class BaseStatus
{
static string[,] arr = new string[5, 2];
static string[,] DefectArr2 = new string[4, 2];
static string[,] DefectArr3 = new string[3, 2];

static BaseStatus()
{
//which 1
arr[0, 0] = "未提交";
arr[0, 1] = "1";
arr[1, 0] = "待确认";
arr[1, 1] = "2";
arr[2, 0] = "已确认";
arr[2, 1] = "3";
arr[3, 0] = "待部署";
arr[3, 1] = "4";
arr[4, 0] = "已部署";
arr[4, 1] = "5";

//which 2
DefectArr2[0, 0] = "设计缺陷";
DefectArr2[0, 1] = "1";
DefectArr2[1, 0] = "执行缺陷";
DefectArr2[1, 1] = "2";
DefectArr2[2, 0] = "内部变化";
DefectArr2[2, 1] = "3";
DefectArr2[3, 0] = "外部变化";
DefectArr2[3, 1] = "4";

//which 3
DefectArr3[0, 0] = "一般";
DefectArr3[0, 1] = "1";
DefectArr3[1, 0] = "重要";
DefectArr3[1, 1] = "2";
DefectArr3[2, 0] = "重大";
DefectArr3[2, 1] = "3";
}

public BaseStatus()
{

}

public BaseStatus(int which, int index1D)
{
string[,] array;
switch (which)
{
case 1:
array = arr;
break;
case 2:
array = DefectArr2;
break;
case 3:
array = DefectArr3;
break;
default:
array = null;
break;
}
value = array[index1D,0];
key = array[index1D, 1];
}

/// <summary>
/// 状态名
/// </summary>
public string value
{
get;set;
}

/// <summary>
/// 状态名对应的数字状态
/// </summary>
public string key
{
get;
set;
}

internal string ReturnProcessValue(object key)
{
return ReturnValue(key, 1);
}

internal string ReturnDefectsTypeValue(object key)
{
return ReturnValue(key, 2);
}

internal string ReturnDefectsLevelValue(object key)
{
return ReturnValue(key, 3);
}

internal string ReturnValue(object key, int which)
{
string[,] array;
switch (which)
{
case 1:
array = arr;
break;
case 2:
array = DefectArr2;
break;
case 3:
array = DefectArr3;
break;
default:
array = null;
break;
}

int k = 0;
if (int.TryParse(key.ToString(), out k))
{

}
if (k > array.Length/2 || k < 1)
{
return "错误的状态";
}

return array[k - 1, 0];
}
}

public class MethodClass
{
private MethodClass(){ }

public class 流程设计: BaseStatus
{
private static 流程设计 instance;
private static object _lock = new object();
private 流程设计()
{

}
public static 流程设计 GetInstance()
{
if (instance == null)
{
lock (_lock)
{
if (instance == null)
{
instance = new 流程设计();
}
}
}
return instance;
}

public BaseStatus 未提交
{
get { return new BaseStatus(1,0); }
}

public BaseStatus 待确认
{
get { return new BaseStatus(1, 1); }
}

public BaseStatus 已确认
{
get { return new BaseStatus(1, 2); }
}

public BaseStatus 待部署
{
get { return new BaseStatus(1, 3); }
}

public BaseStatus 已部署
{
get { return new BaseStatus(1, 4); }
}
}

public class 流程改善类型 : BaseStatus
{
private static 流程改善类型 instance;
private static object _lock = new object();
private 流程改善类型()
{

}
public static 流程改善类型 GetInstance()
{
if (instance == null)
{
lock (_lock)
{
if (instance == null)
{
instance = new 流程改善类型();
}
}
}
return instance;
}

public BaseStatus 设计缺陷
{
get { return new BaseStatus(2, 0); }
}

public BaseStatus 执行缺陷
{
get { return new BaseStatus(2, 1); }
}

public BaseStatus 内部变化
{
get { return new BaseStatus(2, 2); }
}

public BaseStatus 外部变化
{
get { return new BaseStatus(2, 3); }
}
}

public class 流程改善等级 : BaseStatus
{
private static 流程改善等级 instance;
private static object _lock = new object();
private 流程改善等级()
{

}
public static 流程改善等级 GetInstance()
{
if (instance == null)
{
lock (_lock)
{
if (instance == null)
{
instance = new 流程改善等级();
}
}
}
return instance;
}

public BaseStatus 一般
{
get { return new BaseStatus(3, 0); }
}

public BaseStatus 重要
{
get { return new BaseStatus(3, 1); }
}

public BaseStatus 重大
{
get { return new BaseStatus(3, 2); }
}
}

public class ConvertKeyToValue : BaseStatus
{
private static ConvertKeyToValue instance;
private static object _lock = new object();

private ConvertKeyToValue() { }
public static ConvertKeyToValue GetInstance()
{
if (instance == null)
{
lock (_lock)
{
if (instance == null)
{
instance = new ConvertKeyToValue();
}
}
}
return instance;
}

public string ProcessValue(object key)
{
return base.ReturnProcessValue(key);
}

public string DefectsTypeValue(object key)
{
return base.ReturnDefectsTypeValue(key);
}

public string DefectsLevelValue(object key)
{
return base.ReturnDefectsLevelValue(key);
}
}
}

public class ProcessDesignStatusEnum
{
public MethodClass.流程设计 流程设计
{
get { return MethodClass.流程设计.GetInstance(); }
}

public MethodClass.流程改善类型 流程改善类型
{
get { return MethodClass.流程改善类型.GetInstance(); }
}

public MethodClass.流程改善等级 流程改善等级
{
get { return MethodClass.流程改善等级.GetInstance(); }
}

public MethodClass.ConvertKeyToValue ConvertKeyToValue
{
get { return MethodClass.ConvertKeyToValue.GetInstance(); }
}
}

}



 

转载于:https://www.cnblogs.com/ahjesus/archive/2012/03/12/2392072.html


http://www.niftyadmin.cn/n/4235435.html

相关文章

spring 注入static属性

网上好多方法都是错误的&#xff0c;google之&#xff0c;发现http://stackoverflow.com/questions/11324372/how-to-make-spring-inject-value-into-a-static-field 写道You have two possibilities: non-static setter for static property/field;using org.springframework.…

springboot mysql脚本_springboot配置mysql连接的实例代码

一&#xff1a;导入pmo.xm配置包mysql库连接、druid连接池、mybatis组件mysqlmysql-connector-javaruntimecom.alibabadruid-spring-boot-starter1.1.10org.mybatis.spring.bootmybatis-spring-boot-starter${mybatis.version}配置扫描文件src/main/java**/ *.xmltruesrc/main/…

往非sping管理的类里注入spring对象

http://stackoverflow.com/questions/310271/injecting-beans-into-a-class-outside-the-spring-managed-context 写道You can do this: ApplicationContext ctx ... YourClass someBeanNotCreatedBySpring ... ctx.getAutowireCapableBeanFactory().autowireBeanProperties(so…

stringbuilder 编码_从 String.getBytes 理解 Java 编码和解码

原码&#xff0c;补码&#xff0c;反码因为原码&#xff0c;补码&#xff0c;反码比较简单&#xff0c;我这里粘贴一个例子进行展示。Unicode 和 UTF-8 的关系Uincode 是一个字符集。它规定了我们使用到的字或符号的码点(code point)。码点使用 16 进制保存。Uincode 字符集规定…

持久化对象在Hibernate三状态解析

在Hibernate持久化对象可以划分为三种状态&#xff0c;分别是瞬态(Transient)&#xff0c;持久态(Persistent)&#xff0c;脱管态(Detached)。持久化对象的三种状态是可以相互转化的。本文向大家介绍Hibernate持久化对象&#xff0c;可能好多人还不了解Hibernate持久化对象&…

学无止境·MySQL⑤(存储函数、存储过程)

存储函数和存储过程试题 试题一1、创建一个可以统计表格内记录条数的存储函数 &#xff0c;函数名为count_sch()2、创建一个存储过程avg_sai&#xff0c;有3个参数&#xff0c;分别是deptno&#xff0c;job&#xff0c;接收平均工资&#xff0c;功能查询emp表dept为30&#xff…

(转)hibernate 二级缓存配置

在applicationContext.xml文件中添加以下代码&#xff1a; <prop key"hibernate.cache.use_second_level_cache">true</prop> <!--设置缓存机制为二级缓存 --> <prop key"hibernate.cache.use_query_cache">true</prop> …

类似layui的前端框架_浅谈SSM+接口自动化框架结合搭建测试数据平台

一、搭建SSM框架网上有很多这方面的帖子供大家参考&#xff0c;我挑了几篇供大家参考&#xff0c;有兴趣的可以了解下&#xff1a;https://www.jianshu.com/p/fdf1c2ddf201http://www.uml.org.cn/j2ee/201904192.asp二、搭建接口自动化框架所用的框架是javatestngmaven&#xf…