黑马程序员----银行业务调度系统笔记

 ---------------------- android培训java培训、期待与您交流! ----------------------

银行业务调度系统:

需求分析:

1:银行内有六个业务窗口,1—4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口

2:有三种对应类型的客户:vip客户、普通客户、快速客户(办理如交水电费。电话费之类业务的客户)

3:异步随机生成各种类型的客户,生成各种类型用户的概率为:

VIP客户:普通客户: 快速客户 =  1  :  6  :  3

4:客户办理业务所需的时间有最大值和最小值,在该范围内随机设定每个VIP客户以及普通客户办理业务所需的时间,快速客户办理业务所需时间为最小值(提示:办理业务的过程可通过线程Sleep的方式模拟。)

5:各个类型客户在其对应窗口按顺序依次办理业务。

6:当VIP(6号)窗口和快速业务(5号)窗口没有客户等待办理业务的时候,这两个窗口可以处理普通客户的业务,而一旦有对应的客户等待办理业务的时候,则优先处理对应客户的业务。

7:随机生成客户时间间隔以及业务办理时间最大值和最小值,可以设置。

8:不要求是实现GUI,只考虑系统逻辑实现,可通过log方式展现程序运行结果。

 

面向对象设计:

1:客户对应由取号机器产生的号码,因为有三种客户并且彼此独立,因此应该有三个号码管理器,并且它们用多线程实现,相互独立。而现实中银行只有一个号码机器,这三个号码管理器对象有一个号码机器管理,并且整个系统中只能有一个号码机器,因此要设计成单例。

2:窗口依次叫号,即服务窗口每次找号码管理器获取当前要被服务的号码

 

注意:

1:关于NumberManager中的generateManager()和fetchService()必须为同步方法,由于generateManager()为客户来的时候调用,fetchService()为窗口调用,内部都有号码成员变量的访问,因此必须要同步。

 

2:关于单例NumberMachine,单例的实现:将构造方法定义为私有,并且定义一个公有的静态成员变量是自己类的实例,定义静态方法getInstance()返回前面的自己类的实例的静态变量。

3:要通过枚举区分窗口的type:普通、快速、VIP

---------------------- android培训java培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net/heima
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值