黑马程序员技术交流社区

标题: 关于银行调度系统的枚举问题 [打印本页]

作者: 123_yaya    时间: 2014-6-10 13:38
标题: 关于银行调度系统的枚举问题
本帖最后由 123_yaya 于 2014-6-10 18:17 编辑

银行调度系统问题分析得出三大主要类,一个是号码管理器,一个是号码产生器,一个是窗口叫号类。
我理解的是号码管理器就是管理号码,因为号码属于号码管理器类中的数据,所以有产生号码和取出号码这两个方法。
号码产生器,是管理  号码管理器 的类,所以里面定义了私有的普通,快速,VIP客户号码管理器这些数据。另外号码产生器只有一个所以设计为单例的。
而窗口叫号类,是通过号码产生器来产生叫号的方法。在这个类里面,张孝祥老师定义了一个枚举类来确定客户类型有普通,快速,VIP。疑问就在这里了,这里为什么要用到枚举类呢?同时枚举类里面的名称就是普通,快速,VIP,这不相当于是号码管理器的名字吗,不就是号码管理器的数据吗?为什么不是将这些名字通过封装在号码管理器里面来实现呢?为什么要另外定义枚举类呢?求解释。。
作者: 不一样的颜色    时间: 2014-6-10 14:05
枚举的名称是服务的名称,也可以说是不同客户的名称,因为一类服务对应一类客户。Vip服务对应VIP客户,楼主的意思是vipManager,expressManager,commonManager都是NumberManager这个类的实例(只是名字不同),都是在取号那么直接用NumberManager的对象直接去不就可以了,但是1)只是面向对象的思想,一类对象负责一类事物处理。2)真是的项目里面commonManager,VipManager除了取号以外应该还会有其他功能,也就是有自己独特的行为方式(也可以说是除了取号以为公共的行为外的客户需求)3)这只是一个系统大致框架
作者: 123_yaya    时间: 2014-6-10 14:20
本帖最后由 123_yaya 于 2014-6-10 14:21 编辑
不一样的颜色 发表于 2014-6-10 14:05
枚举的名称是服务的名称,也可以说是不同客户的名称,因为一类服务对应一类客户。Vip服务对应VIP客户,楼主 ...

我的意思是在NumberMachine中定义一个属性name。WindowService类中的customertype的属性为什么不能够是通过NumberMachine(号码产生器)的实例去调用vipManager,expressManager,commonManger这些类对象里面各自的属性name。并不是要用  【 都是在取号那么直接用NumberManager的对象直接去】的意思哦。
看视频,不是说数据属于谁就放在哪里吗?那么每个号码管理器应该都有自己的名字的啊?
作者: 不一样的颜色    时间: 2014-6-10 17:51
customertype是标示的服务的名字,根据服务的名字去创建相对应的commonManager,expressManager,vipManager只是名字要对应。1)customertype原本是要写在ServiceWindow里面的,原本是int num类型,switch(num)case 1:commonService();后来不是为了在MainClass里面设置窗口类型简单就改成了Enum类型,
2)主函数里ServiceWindow vipWindow = new vipService();
                vipWindow.setType(CustomerType.VIP);
                vipWindow.start();
是先设置类型在有start()函数获取NumberMachine(号码产生器)的实例vipManager,expressManager,commonManger,怎么可能用没有生成的实例对象vipManager,expressManager,commonManger去调用CustomerType呢哦?
3)楼主说“WindowService类中的customertype的属性为什么不能够是通过NumberMachine(号码产生器)的实例去调用vipManager,expressManager,commonManger这些类对象里面各自的属性name”。NumberMachine(号码产生器)是产生号码的,不是产生服务类型的CustomerType的,一个类干一种事情,这是类的单一职责的原则!!!CustomerType是WindowService类的属性,是WindowService类该干的事,你说不是么,亲:)(ps:希望对你用帮助)
作者: 123_yaya    时间: 2014-6-10 18:13
不一样的颜色 发表于 2014-6-10 17:51
customertype是标示的服务的名字,根据服务的名字去创建相对应的commonManager,expressManager,vipManage ...

好,差不多想明白了。谢谢。
作者: 不一样的颜色    时间: 2014-6-10 19:00
你要参加第几期?
作者: 123_yaya    时间: 2014-6-12 23:44
不一样的颜色 发表于 2014-6-10 19:00
你要参加第几期?

38期,你呢?你是工作了的吗?
作者: 不一样的颜色    时间: 2014-6-13 01:04
123_yaya 发表于 2014-6-12 23:44
38期,你呢?你是工作了的吗?

我去39期




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2