A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 清心玉质 中级黑马   /  2013-8-25 19:14  /  881 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 清心玉质 于 2013-8-26 07:28 编辑

银行案例中,定义了普通 快速和vip三个常量的枚举,
public enum CustomerType {
COMMON,EXPRESS,VIP;
又在NumberMachine创建了这三种实例,
private NumberManager commonManager = new NumberManager();
private NumberManager expressManager = new NumberManager();
private NumberManager vipManager = new NumberManager();
我觉得是代码重复了吧。
可以在枚举里的三个常量应该就是编号管理里的三种实例,然后把generateNewNumber,fetchNumber写在枚举类里,就可以都调用取号方法。这样就不用定义NumberManager类了。
我运行起来没发现啥问题,不知道这样写代码有没有什么不妥。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

4 个回复

倒序浏览
NumberMachine返回的是号码管理的实例,也就是三种客户窗口要有三个独立的号码容器,普通客户拿号是从1号开始拿,快速客户也是从1号开始拿,这个和客户类型不冲突。

在后面服务窗口类中,是要判断客户类型的,用的是switch-case语句,用来判断是哪种客户,哪种客户就用相对应的服务方法,如果不定义枚举类,那怎么判断呢?
回复 使用道具 举报
小冰块 发表于 2013-8-25 22:33
NumberMachine返回的是号码管理的实例,也就是三种客户窗口要有三个独立的号码容器,普通客户拿号是从1号开 ...

呃  我是说不用定义NumberManager类。。
回复 使用道具 举报
清心玉质 发表于 2013-8-25 22:37
呃  我是说不用定义NumberManager类。。

如果你运行起来没问题的话也可以那样写啊,至于是不是重复,其实可以用不同的面向对象方式解释。如果按照张老师的写法,号码的产生和被处理是管理模块的行为,号码管理模块用号码的产生和删除代替了客户到来和离开的两个事件,如果按照你的思路,你可以把方法换个名字,就叫客户的到来方法和客户的离开方法,这样就又是一种面向对象的方法,也很好啊。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
小冰块 发表于 2013-8-25 22:52
如果你运行起来没问题的话也可以那样写啊,至于是不是重复,其实可以用不同的面向对象方式解释。如果按照 ...

谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马