当前位置:  开发笔记 > 编程语言 > 正文

Enum vs Lookup表vs Enum反射vs状态模式

如何解决《EnumvsLookup表vsEnum反射vs状态模式》经验,为你挑选了1个好方法。

我将构建的软件将涉及"应用程序"在不同状态之间切换很多.某些任务可以完成,具体取决于应用程序所处的状态.我正在考虑使用枚举作为状态

public class Application
{
  public int Id {get;set;}
  public Status {get;set;}
}
public enum Status
{
  [Description("New")]New = 1, [Description("Closed")]Closed = 2
}

但后来我想也许在数据库中使用查找表是好的,因为状态会经常更新/重新排序

table status (id int pk, desc string, sort_order int)
table application (id int pk, status_id int fk)

在我的情况下,我需要做的事情

if (application.Status == Status.New)
{ //do something }
else if (application.Status == Status.Closed)
{ //do other things }

我认为以上情况更易于使用枚举.但是,当涉及到更新状态排序顺序或描述时,这将非常困难.

我应该使用反射根据查找表中的值动态创建枚举吗?或者我应该使用状态模式?我看到enum relfection的问题是性能影响.并且状态模式可以产生大量冗余代码.

你怎么看?提前致谢!



1> Frederick Th..:

你不应该在任何地方用这个检查洒你的代码

if (application.Status == Status.New)
{ //do something }
else if (application.Status == Status.Closed)
{ //do other things }

相反,使用状态模式.每当应用程序模式发生更改时更改状态,并将所有调用转发到状态方法.您将拥有更清洁,更易于维护的代码.

至于改变状态,这与状态模式无关.所以你可以使用任何优雅的方法.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有