------- android培训、java培训、期待与您交流! ----------
首先还是庆幸自己把银行业务给做出来了,当然也都是张老师的思想!其中的类规划都是张老师的。但是自己没有参考源码自己做出来,还是很庆幸的,因为该错误,改了一下午。
闲话不多说,我们来看业务,我就不论述题目的要求了,首先写的类应该是Numbermanager类
public class NumberManager {
private int number = 0;//号码
private List<Integer> numberQue =new ArrayList<Integer>();//存储队列
public synchronized void addNumber()//添加成员,就好比是添加客户
{
number++;
numberQue.add(number);
}
//这两个方法要尤其注意的就是同步的实现
//还有就是你必须去判断队列中有无元素?然后再进行删除!
public synchronized Integer getNumber()//取数据
{
Integer num = null;
if(numberQue.size() > 0)
{
num = numberQue.remove(0);
}
return num;
}
}
那么这个类的作用是什么?首先我们应该分析业务,我们需要的是号码代表客户,也就是相当于银行的取号机!所以我们必须有客户,这里就是以号码代替客户!所以我们的NumberManager有取票的方法!之后就是那个出票机器了!NumberMachine类
public class window {
private int type;
public window(int type)
{
this.type = type;
}
public void start()
{
//分别设计为单个线程!我们可以再这里区分
Executors.newSingleThreadExecutor().execute(new Runnable(){
@Override
public void run() {
while(true)
{
switch(window.this.type)//区分的代码!
{
case 1: vipMethod();
break;
case 2: postMethod();
break;
default : comMethod();
}
}
}
});
}
//下面是3个分别的方法。也就是说每种 窗口的业务是不同的!
//vip和post可以处理com的业务
//并且vip:com:post为1:6:2
//在这几个方法中其实核心代码就是取号妈,取完后就ok',其他的都为辅助信息
private void vipMethod() {
Integer cilentNum = NumberMachine.getInstance().getvip().getNumber();
if(cilentNum == null)
{
cilentNum = NumberMachine.getInstance().getcom().getNumber();
if(cilentNum == null)
{
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("vip窗口等待业务");
}
else
{
System.out.println("vip取到com业务");
try {
Thread.sleep(2000);
} catch (InterruptedExcepti