现在的位置: 首页 > 综合 > 正文

黑马程序员_银行管理系统笔记

2013年10月03日 ⁄ 综合 ⁄ 共 2020字 ⁄ 字号 评论关闭

 

                                             --------------        Android培训          java培训  
期待与您交流! --------------

首先在这里老师分析的需求和逻辑就不再赘述了

在这个系统里主要用了3个类NumberManager  NumberMachine  ServiceWindow  和枚举类和常量

NumberManager  主要是生成服务号码和取服务号码两个方法,

在generateNumber方法里,首先把客户去的号码放进List集合里面,在这里要注意return lastNumber++和return ++lastNumber的区别

第一个是先返回,再把lastNumber加一 后者是先把lastNumber加一再返回.

在fetchServiceNumber里面需要判断集合里面是否有号码,如果没有就会放回null,所以需要判断集合是否有号码,并且把返回值变为Integer 这也是Integer和int之间区别之一,在javaEE里面更建议使用integer.

 

 

NumberMachine  类是一个号码机器在整个系统中始终只能有一个,所以适合使用单例模式:

因为一共有三种窗口,普通窗口.快速窗口和VIP窗口 但是他们的取号码的方式是一样的,故定义三个NumberManager类型的成员变量,同时提供getter方法,

在定义单例的时候要注意,首先把构造方法定义成private的,这样别人就不能直接通过new 关键字实例化了,其次,既然别人不能直接实例化,那么我们就必须对外提供一个方法获取该实例对象,所以需要把该方法定义成static的,返回值为该类型,并且要把NumberMachine numberMachine = new NumberMachine ()定义成private和static的,因为一个static的方法不能直接使用static的成员变量,

 

ServiceWindow 有一个核心方法start 就是不停的叫号, 因为这个类的代码较多,就不再复制了,也没有是什么意思.

通过switch来判断是普通窗口 快速窗口还是VIP窗口,为什么要用switch而不用if 条件语句呢?因为switch的语句效率要高 至于为什么我也找了资料:

其次就是三种窗口的服务的方法

普通窗口:

 快速窗口:

VIP窗口:

在commonService 方法中要注意

不能把type硬编码(harded code)为普通窗口,因为如果vip窗口没有客户,转而为普通客户服务,那么type就是vip,那么在控制台就永远看不到vip窗口为普通用户服务的语句了,尽管vip窗口为普通用户服务了.但是输出的却不是!

在这里我又只能硬编码了 因为如果vip窗口没有客户,转而为普通客户服务,那么type就是vip,如果此处不硬编码的话就成了vip窗口为vip用户服务了.这也是不符合实际的.

 

在枚举类中要注意:

如果直接输出枚举类的实例,就会调用枚举类的toString()方法其实不止枚举类,其他的类也是一样的,要想输出中文而不是枚举的实例,就只好覆写toString方法.

 

最后还有常量类Constants   在看老师视频的时候发现常量定义有误,可能是老师有点累把,定义常量的时候应该是public static final int MAX_TIME= 10;

而老师没有加上final关键字,从老师的编码的方式和风格上,我们可以看出,如果种类是有限的可以考虑使用枚举,如果我们多次使用同一个字符串或者整形可以考虑使用常量的方式,而不是硬编码的方式使用字符串或整形int   这样有助于代码的维护了,因为该字符串或int整形要修改值,那么就要修改多处,维护很不方便.

 

最后一个就是测试类了

 

首先ServiceWindow类创建4个普通窗口 1个快速窗口  1个vip窗口 并且同时设置窗口的类型或窗口id,

然后定义三个定时器,分别用来给普通客户取号  快速客户取号   vip客户取号 如代码片段

又因为在一定时间内这三个窗口的人数比为//vip:common:express = 1:6:3

所以三个线程池执行任务的周期分别为

Constants.COMMON_CUSTOMER_INTERVAL_TIME

Constants.COMMON_CUSTOMER_INTERVAL_TIME*2,

Constants.COMMON_CUSTOMER_INTERVAL_TIME*6,

假设时间为6秒那么三个窗口的人数为vip:common:express =1:6:3所以比列刚好.

这样整个系统就成了一个整体了.

                                          --------------        Android培训          java培训  
期待与您交流! --------------

抱歉!评论已关闭.