有时候常量比枚举好用
来源:互联网 发布:数字油画需要什么软件 编辑:程序博客网 时间:2024/06/05 18:52
有这样一个场景,有下面的Logic类,每个类中都需要判断DoOperAction是否为空,然后进行一些操作。由于每个Logic对应的OperType可能不一致,因此就每个类定义了特定的判断方法。但当Logic类增加时,DoOper方法又需要重新定义一次,觉得得重构下。应该可以提取到BaseLogic中。
第一次提取,由于每个Logic中OperType的不一致,提取后,只能使用枚举类型的兼容类型int,具体代码如下:
public abstract class BaseLogic { public Action<int> DoOperAction; protected void DoOper(int a) { //some complex logic if (null != DoOperAction) { var action = DoOperAction; action(a); } } }
public class ConcreteLogicA : BaseLogic { public enum OperType { MoveA, DragA } public void DoDrag() { DoOper((int) OperType.DragA); } public void DoMove() { DoOper((int) OperType.MoveA); } }
看起来还不错,但是。。。当OperType中的类型变多时,每次填写DoOper的参数时就需要强制转换,那么怎么解决? 将枚举替换为常量。
代码如下:
public class ConcreteLogicA : BaseLogic { public sealed class OperType { public const int MoveA = 1; public const int DragA = 2; } public void DoDrag() { DoOper(OperType.DragA); } public void DoMove() { DoOper(OperType.MoveA); } }
综上,有时常量比枚举好用。
阅读全文
0 0
- 有时候常量比枚举好用
- HTTP 有时候比 HTTPS 好
- 为什么 HTTP 有时候比 HTTPS 好?
- 为什么 HTTP 有时候比 HTTPS 好?
- 为什么HTTP有时候比HTTPS好?
- 枚举常量
- 枚举常量
- 枚举常量
- 枚举常量
- Java开发中有时候用十六进制定义常量有什么好处?什么时候考虑使用十六进制?
- 有时候,汇编比高级语言更易懂
- 提出问题有时候比解决问题更难。
- 有时候学历比努力更重要~!
- 为什么HTTP有时候比HTTPS要好?
- 比FlashGet好用的FlashGet
- 比urllib好用的requests
- 为何Redis要比Memcached好用
- 为何Redis要比Memcached好用
- cogs721. [SDOI2007] 线性方程组
- 说说 Java I/O 系统之标准 I/O
- 第一次使用Android Studio时你应该知道的一切配置(二):新建一个属于自己的工程并安装Genymotion模拟器
- 云平台建设学习5
- MySQL的if,case语句使用总结..MySql 里的IFNULL、NULLIF和ISNULL用法
- 有时候常量比枚举好用
- 新手指南:如何使用c118+osmocombb进行短信嗅探实验?
- ToLua学习笔记,创建自定义矩阵类
- CSS字体垂直、水平居中
- Shell 正则表达式
- Android模拟器Genymotion使用详解
- 网络服务器select
- Codeforces 588B Duff in Love【暴力】水题
- TinkPHP 自定义API基控制器类