if else 语句 的优化
来源:互联网 发布:iptables开放3306端口 编辑:程序博客网 时间:2024/05/14 11:19
请教诸位这么一个问题,一个假象的银行帐户管理系统中:
* 帐户(Account)分为普通帐户,VIP帐户和信用卡帐户三种.
* 每个帐户都可以执行取钱,存钱,注销三种操作
* 关于取钱操作的细节:
普通帐户每次取钱限额为1000元,不能透支
VIP帐户每次取钱限额为3000元,不能透支
信用卡帐户每次取钱限额为3000元,可以透支
* 另外每个帐户有四种可能的状态:新建、正常、冻结、挂失
* 帐号处于不同状态时对于上面提到的三种操作会产生影响:
新建状态时不能执行注销操作
挂失状态时不能执行存钱、取钱操作
冻结状态时不能执行存钱、取钱、注销操作
这是简单的需求,在设计时,
* 我将帐户设置为抽象类(Account),普通帐户,VIP帐户和信用卡帐户为其子类
* 使用状态模式管理帐户的四种状态,具体做法为:建立接口AccountState,其中包含取钱,存钱,注销三个方法,然后给出四个实现类,分别对应新建、正常、冻结、挂失四种状态。在Accout中保持一个对状态的引用
问题:在实现状态模式中的三个方法的时候出现了问题,以取钱为例,显然取钱时要判断当前帐号的类别,这样一来难免引入if判断,二来需要在状态类中依赖Account子类,感觉并不好,请教好的解决思路。
(为了避免代码冗余,希望能用策略模式实现取钱,存钱等方法)
* 帐户(Account)分为普通帐户,VIP帐户和信用卡帐户三种.
* 每个帐户都可以执行取钱,存钱,注销三种操作
* 关于取钱操作的细节:
普通帐户每次取钱限额为1000元,不能透支
VIP帐户每次取钱限额为3000元,不能透支
信用卡帐户每次取钱限额为3000元,可以透支
* 另外每个帐户有四种可能的状态:新建、正常、冻结、挂失
* 帐号处于不同状态时对于上面提到的三种操作会产生影响:
新建状态时不能执行注销操作
挂失状态时不能执行存钱、取钱操作
冻结状态时不能执行存钱、取钱、注销操作
这是简单的需求,在设计时,
* 我将帐户设置为抽象类(Account),普通帐户,VIP帐户和信用卡帐户为其子类
* 使用状态模式管理帐户的四种状态,具体做法为:建立接口AccountState,其中包含取钱,存钱,注销三个方法,然后给出四个实现类,分别对应新建、正常、冻结、挂失四种状态。在Accout中保持一个对状态的引用
问题:在实现状态模式中的三个方法的时候出现了问题,以取钱为例,显然取钱时要判断当前帐号的类别,这样一来难免引入if判断,二来需要在状态类中依赖Account子类,感觉并不好,请教好的解决思路。
(为了避免代码冗余,希望能用策略模式实现取钱,存钱等方法)
- if else 语句 的优化
- if else语句的优化
- if else if else 语句的拓展
- java中过多if-else分支语句的优化方案
- java中 if-else分支语句的优化方案
- Java语言——else if语句嵌套的优化
- 嵌套的if-else语句
- if..else语句的嵌套
- if else语句的应用
- else if 语句的应用
- shell的if else 语句
- angularjs的if、else语句
- if else语句的使用
- ejs 的else if语句,
- IF-ELSE IF-ELSE语句
- if else if与if if语句的区别
- IF...ELSE IF...ELSE IF...ELSE多分枝语句的反汇编判断
- PHP的if...else语句的用法
- Spring中通过实现ApplicationContextAware接口获取bean
- 跟我一起学习ASP.NET 4.5 MVC4.0(六)
- Ubuntu12.04安装MySQL
- JS jQUERY GET or POST 传参数中文乱码问题记录_(1)
- android自带的xml解析类分析
- if else 语句 的优化
- Linux命令:cp (copy)复制文件或目录
- TKPROF 使用
- 【如不必要不建议这样做,挣钱也不容易】反编译应用去除广告
- 软件开发人员转型指南
- android学习常见错误
- 20款非常实用的Web工具和资源列表
- 为什么要设置JAVA_HOME、Path、CLASSPATH、CATALINA_HOME 配置 原因 是什么!
- USB OTG的工作原理