黑马程序员_银行调度系统分析笔记,黑马调度系统
黑马程序员_银行调度系统分析笔记,黑马调度系统
------------ android培训、java培训、java博客、java学习型技术博客、期待与您交流! -------------
该题让求职者写一个银行业务调度系统。
银行中有6个窗口,4个窗口为普通窗口,办理一般业务。
5号窗口为快速窗口,办理快速业务。
6号窗口为VIP窗口,办理VIP业务。
当没有快速客户时,快速窗口也受理一般业务。
当没有VIP客户时,VIP窗口也受理一般业务。
根据面向对象的设计思想。
有一个取号器类:管理取出的号码的类型,分别对应客户的类型。取号器只能有一个,所以设计为单例模式、
窗口类:该类调用取号器中分发的号码,根据号码的类型,为对应的客户服务。
取号器类:
取号器可以生成三个号码管理器,分别管理一般客户的序列,快速客户的序列和VIP客户的序列。取号器只有一个,所以为了保证它在内存中的唯一性,使用单例设计模式。
关于号码管理类:
该类中提供一个分号的方法,用于派发一个整数序列,该序列表示着被受理的业务的顺序。
还有一个将序列派发给窗口的方法,窗口根据取号器类中的这个方法,获取应该为哪个客户服务。
因为序列被以上两个方法所共用,所以定义了一个ArrayList集合,当客户来取号的时候,将分配给客户的号码添加到集合中,再加这个号码返回给客户。当窗口获取服务序列时,就将集合中的第一个元素移除。因为操作的是同一个集合,有可能出现安全隐患,所以需要同步。
窗口类:
该类中,使用了线程池创建一个线程。
使用枚举定义了3个类型:一般,快速,VIP;
线程中,对不同类型的客户分配相应类型的窗口为其服务。一般窗口如果没有获取到需要服务的客户,就等待1秒重新获取。快速窗口没有获取到需要快速服务的客户,就接着获取需要普通服务的客户。VIP窗口也和快速窗口的流程一样。
小知识:switch效率比if else效率高
主函数:
在主函数中,开启一个快速窗口,一个VIP窗口,五个普通窗口。
再开启三个线程,分别生成需要普通服务的客户,需要快速服务的客户,需要VIP服务的客户。
运行时出现数组角标越界异常,因为窗口在向号码管理器要号的过程中,号码管理器类中的数组中并没有数据,所以抛出异常。
总结:
该实例模拟银行业务调度系统。
根据面向对象的思想,创建一个窗口类,用于服务客户和叫号。
创建一个取号器,用于给不同类型的客户分派不同的号码,将该号码添加到集合中。
不同类型的窗口,为取号器中分派的类型进行一对一的服务。
------------ android培训、java培训、java博客、java学习型技术博客、期待与您交流! -------------
详情请查看:http://edu.csdn.net/heima/
相关文章
- 暂无相关文章
用户点评