黑马程序员之银行系统的学习分析
来源:互联网 发布:扇贝单词mac版 编辑:程序博客网 时间:2024/04/26 12:33
又是一个面向对象的范例啊!接着体会吧!
银行业务调度系统的分析:
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
- 黑马程序员之银行系统的学习分析
- 黑马程序员之银行系统学习笔记
- 黑马程序员_java学习之印银行系统
- 黑马程序员银行调度系统学习日记
- 黑马程序员-----银行调度系统学习日志
- 黑马程序员--学习--银行系统(摘)
- 黑马程序员-----------银行调度系统学习笔记
- 黑马程序员_13_7k之银行调度系统
- 黑马程序员---银行系统
- 黑马程序员:银行系统
- 黑马程序员 银行系统
- 【黑马程序员】银行系统
- 黑马程序员------银行系统
- 黑马程序员_银行管理系统(项目分析)
- 黑马程序员 银行调度系统
- 黑马程序员-银行调度系统
- 黑马程序员--银行调度系统
- 黑马程序员--银行调度系统
- 数据库树型结构中获取目录串的高性能方法,sys_connect_by_path与自定义函数性能对比
- 79. Bad news has wings. 好事不出门,坏事传千里
- 黑马程序员之移动通信分析学习
- 循序渐进Lu例程
- 在文件每行后加上指定符号的批处理
- 黑马程序员之银行系统的学习分析
- 适易信息管理系统架构、配置实现增删改查思路及总结
- CSDN,我梦想的乐土
- 适易信息管理系统架构、配置实现增删改查中工具类介绍
- 在Servlet程序中使用Cookie
- Project Server 2007安装配置过程图解
- Cookie
- SharePoint 2007部署过程详细图解(上)— 前期环境搭建
- SharePoint 2007部署过程详细图解(中)— 安装MOSS 2007