if else 语句 的优化
2013-04-24 10:22
260 查看
请教诸位这么一个问题,一个假象的银行帐户管理系统中:
* 帐户(Account)分为普通帐户,VIP帐户和信用卡帐户三种.
* 每个帐户都可以执行取钱,存钱,注销三种操作
* 关于取钱操作的细节:
普通帐户每次取钱限额为1000元,不能透支
VIP帐户每次取钱限额为3000元,不能透支
信用卡帐户每次取钱限额为3000元,可以透支
* 另外每个帐户有四种可能的状态:新建、正常、冻结、挂失
* 帐号处于不同状态时对于上面提到的三种操作会产生影响:
新建状态时不能执行注销操作
挂失状态时不能执行存钱、取钱操作
冻结状态时不能执行存钱、取钱、注销操作
这是简单的需求,在设计时,
* 我将帐户设置为抽象类(Account),普通帐户,VIP帐户和信用卡帐户为其子类
* 使用状态模式管理帐户的四种状态,具体做法为:建立接口AccountState,其中包含取钱,存钱,注销三个方法,然后给出四个实现类,分别对应新建、正常、冻结、挂失四种状态。在Accout中保持一个对状态的引用
问题:在实现状态模式中的三个方法的时候出现了问题,以取钱为例,显然取钱时要判断当前帐号的类别,这样一来难免引入if判断,二来需要在状态类中依赖Account子类,感觉并不好,请教好的解决思路。
(为了避免代码冗余,希望能用策略模式实现取钱,存钱等方法)
* 帐户(Account)分为普通帐户,VIP帐户和信用卡帐户三种.
* 每个帐户都可以执行取钱,存钱,注销三种操作
* 关于取钱操作的细节:
普通帐户每次取钱限额为1000元,不能透支
VIP帐户每次取钱限额为3000元,不能透支
信用卡帐户每次取钱限额为3000元,可以透支
* 另外每个帐户有四种可能的状态:新建、正常、冻结、挂失
* 帐号处于不同状态时对于上面提到的三种操作会产生影响:
新建状态时不能执行注销操作
挂失状态时不能执行存钱、取钱操作
冻结状态时不能执行存钱、取钱、注销操作
这是简单的需求,在设计时,
* 我将帐户设置为抽象类(Account),普通帐户,VIP帐户和信用卡帐户为其子类
* 使用状态模式管理帐户的四种状态,具体做法为:建立接口AccountState,其中包含取钱,存钱,注销三个方法,然后给出四个实现类,分别对应新建、正常、冻结、挂失四种状态。在Accout中保持一个对状态的引用
问题:在实现状态模式中的三个方法的时候出现了问题,以取钱为例,显然取钱时要判断当前帐号的类别,这样一来难免引入if判断,二来需要在状态类中依赖Account子类,感觉并不好,请教好的解决思路。
(为了避免代码冗余,希望能用策略模式实现取钱,存钱等方法)
相关文章推荐
- java中过多if-else分支语句的优化方案
- if else语句的优化
- 通过goto语句学习if...else、switch语句并简单优化
- java中 if-else分支语句的优化方案
- 多条件if...else...选择语句代码优化
- if elseif else条件语句的计算量问题
- if 语句的优化
- Shell编程中if-elif-else条件分支语句测试
- Python中在for循环中嵌套使用if和else语句的技巧
- 深入浅出学习Struts1框架(三):彻底去掉TestServlet中的字符串和if-else语句块
- 自制编程语言CXScript(三) 如何实现if语句、else语句并实现分支跳转
- switch...case 和 if...else效率比较和优化
- if/else 分支控制语句
- if--(else)语句,getchar()和putchar()、&&、||、!逻辑运算符
- Python中的if、else、elif语句用法简明讲解
- 黑马程序员--If-else和switch语句
- Python-if-elif-else语句
- 选择 | 循环 | 语句(if,if……else,switch,while,for)的理解和使用
- Python学习入门基础教程(learning Python)--3.3.4 Python的if-elif-else语句
- CPU与代码优化(1):用三元操作符替代if-else以降低CPU分支预测惩罚;函数13倍提速(Unity)。