黑马程序员_银行调度系统笔记

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

银行业务调度系统需求分析:
有三种对应类型的客户:VIP客户,普通客户,快速客户 ,异步随机生成各种类型的客户,各类型客户在其对应窗口按顺序依次办理业务 。
首先,每一个客户其实就是由银行的一个取号机器产生号码的方式来表示的。所以,要有一个号码管理器对象,让这个对象不断地产生号码,就等于随机生成了客户。
由于有三类客户,每类客户的号码编排都是完全独立的,所以,我想到本系统一共要产生三个号码管理器对象,各自管理一类用户的排队号码。这三个号码管理器对象统一由一个号码机器进行管理,这个号码机器在整个系统中始终只能有一个,所以,它要被设计成单例。
各类型客户在其对应窗口按顺序依次办理业务 ,准确地说,应该是窗口依次叫号。
各个窗口怎么知道该叫哪一个号了呢?它一定是问的相应的号码管理器,即服务窗口每次找号码管理器获取当前要被服务的号码。

分别编写号码管理器类、管理号码管理器的号码机器类、用于定义用到的常量服务窗口类
a) NumberManager类
i. 用于管理所有客户号码。能够生成并存储号码。由于窗口也要叫号,所以管理号码的方法要进行同步。
b) NumberMachine类
i. 管理不同类型的号码(vip, 普通, 快速),所以创建三个NumberManager对象,并由三个方法返回它们的实例。一个银行一般只有一个NumberMachine,所以将NumberMachine类设计成单例。
c) CustomerType枚举类
i. 定义三种类型的客户。
d) ServiceWindow类
i. 控制服务窗口的类。启动一个线程,根据三种类型的客户,调用三个方法,并用打印信息的方式,查看运行效果。
e) MainClass类
i. 程序入口。创建4个普通窗口,1个vip窗口和1个快速窗口。
ii. 用定时器,按照比例定时创建随机客户,即号码。分三种:vip、普通和快速。
f) Constants类
i. 用于定义用到的常量


疑问点:

对于单例模式的理解
单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
构造方法私有化,创建静态get方法,返回对应类。

实例:

public class NumberMachine {
	
	private NumberMachine(){}
	private static NumberMachine instance = new NumberMachine();
	public static NumberMachine getInstance(){
		return instance;
	}
         …………
}


技巧:
在代码大量重复时,最好进行抽出来子类。
将父类中的基础不一致代码抽出来做成方法,子类覆盖这个方法即可实现代码最大限度的重用。


----------------------android培训java培训、期待与您交流! ---------------------- 详细请查看:http://edu.csdn.net/heima

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值