黑马程序员之银行系统的学习分析

来源:互联网 发布:扇贝单词mac版 编辑:程序博客网 时间:2024/04/26 12:33
 ---------------------- android培训、java培训、期待与您交流! ----------------------

又是一个面向对象的范例啊!接着体会吧!

银行业务调度系统的分析:

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

  当VIP客户忙完后可以为普通客户服务

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

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

VIP:普通:快速=1:6:3;

3.客户办理业务所需要的时间有最大值和最小值,在该范围内随机设定每个Vip客户以及普通客户办理业务所需要的事件,快速客户办理业务所需时间为最小值(可以用线程的睡眠Sleep())

4.各类型客户在其对应的窗口按顺序依次办理业务

然后我们进行面向对象的分析和设计:

从中提取类和对象的信息

首先我们要有一个号码管理对象,让这个对象不断的产生号码,就等于随机生成了客户

然后由于有三类客户,没类客户的号码编排都是完全独立的,所以我想到本系统一共要产生三个号码管理对象,各自管理一类用户的排队号码,这三个号码管理器对象统一有一个号码机器进行管理,这个号码机器在整个系统中只能有一个,所有,他要被设置成单例

各个窗口怎么知道该叫哪个号了,它必须去问相应的号码管理器,即服务窗口每次找号码管理器获取当前要被服务的号码

Package cn.itcast.bank;

public class NumberManager{

private int lastNumber=1;

private List <Integer>queueNumber=new ArrayList<Integer>();

public generateNewManager(){

queueNumber.add(lastNumber);

return lastNumber++;

}

public int fetchServiceNumber(){

return queueNumber.remove(0);

}

}

Public class NumberMachine{

Private NumberManger commonManager=new NumberManager();

private NumberManger expressManager=new expressManager();

private NumberManger vipManager=new vipManager();

public NumberManager getCommonManager(){

return conmmonManager;

}

public NumberManager getExpressManager(){

return expressManager;

}

public NumberManager getVipManager(){

return vipManager;

}

 

Private NumberMachine(){

//单例

Public static NumberMachine getInstance(){

Return instance;

}private static NumberMachine instance=new NumberMachine();

}

}//服务窗口

Public class ServiceWindow{

Private CustomerType=CustomerType.COMMON;

Private int windowId=1;

Public void start(){

//线程池Executors.newSingleThreadExecutor().execute(new Runnable(){

Public void run(){

While(true){

Switch(type){

Case COMMON:

String windowName=”第”+windowId+”号”+type+”窗口”;

System.out.println(“正在获取任务”);

 

Integer

number= NumberMachine.getInstance().getCommonManager().fetchServiceNumber();

if(number!=null){}else{System.out.println(“没有渠道服务任务”)}

break;

Case

}

}

}

});

}

}

Public enum CustomerType{

COMMON,EXPRESS,VIP;

Prblic String toString(){

Switch(this){

Case COMMON:

return “普通”;

Case EXPRESS:

return “快速”;

 

Case VIP:

return name();

 

}return null;

}

}

从这个系统中可以体会到枚举的应用是无处不在,面向对象的编程思想是很重要的,有了这种思想才有一个好的思路,用类与对象去调用方法,解决问题

 

 

 

 

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

原创粉丝点击