黑马程序员_银行业务调度系统

来源:互联网 发布:批量申请淘宝小号 编辑:程序博客网 时间:2024/05/18 02:24

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

银行业务调度系统

一、系统功能需求与实现:
1.银行有三种业务类型,共6个业务窗口:1-4号是普通业务窗口,5号是快速业务窗口,6号是VIP窗口。
2.模拟客户的到来,按概率比例,异步随机生成各类型的用户。
3.模拟各窗口为客户办理业务,办理业务所需时间有最大最小值,快速业务所需时间为最小值。其余业务办理时间为最大最小值间的随机数。
4.各类型客户在对应窗口按顺序依次办理业务。
5.当VIP窗口和快速窗口暂无对应类型客户办理业务时,可办理普通业务。一旦有对应客户等待,则优先办理对应客户业务。

二、面向对象的分析与模型设计:
号码生成器类:
    属性:最新号码变量、号码集
    方法:生成新号码、获取号码

号码管理器类:
    属性:三个号码生成器对象,分别对应三种业务类型;管理器的单例;
    方法:获取三个对应生成器对象的getter方法
    
业务类型:(枚举类)
    对象:普通、快速、VIP

服务窗口类:
    属性:窗口ID号、窗口类型、服务时间的最大值、最小值
    方法:开启窗口服务、普通服务、快速服务、VIP服务

服务主类:
    生成六个窗口对象,并为每个窗口对象分配一个线程:
    四个普通窗口对象,一个快速窗口线程,一个VIP窗口线程。
    使用预定周期频率的线程对象,模拟三类客户的出现,出现概率为: vip:普通:快速 == 1:6:3

三、涉及的重要知识点:
    1. 面向对象的分析与设计思想,类的属性和方法的设计与封装
    2. 枚举类的应用
    3. Executors创建线程及预定线程的应用,及线程的同步知识

四、个人总结:
    通过此系统的练习,觉得最核心部分就是面向对象的分析与设计,这是解决问题的入口,在理解业务需求的基础上去分析、去抽取类,以及类中包含的属性和方法。其次,是线程的使用方面,通过Executors类及其子类对象来创建线程很方便,而且预定固定周期的线程能替代定时器的功能,很强大。整个系统的模拟过程中,还要注意线程同步的问题。根据业务的情况,将号码管理器设计为单例,将管理器内的三种号码生成器设计为公共资源,在对此资源进行存/取的访问时,就要实现线程同步。

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

详情请查看:http://edu.csdn.net/heima

原创粉丝点击