黑马程序员-银行业务调度系统学习-No.12

来源:互联网 发布:淘宝拍摄图像相机设置 编辑:程序博客网 时间:2024/05/16 12:30

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

看完张老师的银行业务调度系统,虽然这个面向对象的分析与设计的过程和交通灯管理系统相差不大,但对与我这入门级菜鸟来讲,这也是学习的盛宴,总能带来新鲜的感受和不同的收获。又记住了一句张老师的名言名理(虽不是原话但大意就是这样):编写代码的时候就是要学会自己欣赏自己,自己给自己找成就感!

银行业务调度系统需求:6个窗口,1-4号为普通窗口,5号为快速窗口,6号为VIP窗口,分别对应不同的客户,各类客户的概率比率为:(VIP:普通:快速 = 1:6:3),客户办理业务时间由最大值与最小值之间随机产生,用线程sleep模拟,各类型客户在其对应窗口按顺序依次办理业务,当56号窗口没有对应客户时可以服务普通客户。

同上个项目,我的学习方式是看完张老师的视频讲解后,自己默想一遍,分析业务过程和梳理分析思路,代码敲一敲,但是自己也只能半自敲半参考,还得多复习多学习。下面是自己看了视频后背着视频教程整理的思路:

1、分析系统对象,该合并的合并,该遗弃的遗弃;

  对象有窗口,客户,但是实际中已经把客户抽象为所取得排队号码,只有取了号码,才视为需要等待服务的客户,所以这儿客户对象应转换为号码,共3种号码(对应3中客户),每种号码由一个号码管理器操作,号码是由取号机产生的,所以需要一个客户取号机作为对象,一个银行一个客户取号机,里面对应3种号码,所以号码管理器作为取号机的3个成员变量,取号机设计为单例。另外,操作窗口与客户之间的业务关系由一个服务类代替,所以主类有这3个。

2、分析每个对象需要的属性和方法;

  号码管理器需要一个变量用于存储临时产生的号码,然后一个集合存储所有产生的号码,这是两个成员属性;对于方法,需要一个生产号码的动作和一个号码被处理的动作。

3、最好用画图的形式描述每种对象之间的关系;

  因为取号机里面可以取3种号码,每种号码代表一类客户,即一类对象,所以取号机应该包含3个号码管理器,号码管理器作为取号机的3个属性;窗口服务类则要指挥窗口合理处理客户号码。

4、编写每个对象的方法骨架;(注意处理资源问题和线程安全)

  号码管理器的生产号码和号码被取方法因为不同对象调用,而资源只有一个,所以需要互斥同步,取号机应该可以调用属于本身的号码管理器;窗口服务类包含3种服务,应该是3个线程,每个线程处理的事物大致相同。

5、方法细写

6、编写主调类

  创建窗口对象和号码对象,启动窗口服务

7、测试

其它笔记

1、变量类型尽量面向父类或接口上级,这样使用更灵活,更“专业”

2、程序中的常量最好单独定义一个类

3、创建线程用java5的新方法,用线程池,效率更高。

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

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