银行业务调度系统笔记

再次强调一下面向对象设计把握的重要经验:

谁拥有数据,谁就对外提供操作这些数据的方法。

面向对象的分析与设计

1.  有三种对应类型的客户:VIP客户,普通客户,快速客户,异步随机生成各种类型的各户,各类型客户在其对应窗口按顺序依次办理业务。即窗口叫号。VIP客户可在任意空闲窗口办理业务,快速窗口办理完其交费业务后,也可以办理普通客户的业务。

2.  类:

a)       NumberManager

                        i.              用于管理所有客户号码。能够生成并存储号码。由于窗口也要叫号,所以管理号码的方法要进行同步。

b)       NumberMachine

                        i.              管理不同类型的号码(vip 普通, 快速),所以创建三个NumberManager对象,并由三个方法返回它们的实例。一个银行一般只有一个NumberMachine,所以将NumberMachine类设计成单例。

c)        CustomerType枚举类

                        i.              定义三种类型的客户。

d)       ServiceWindow

                        i.              控制服务窗口的类。启动一个线程,根据三种类型的客户,调用三个方法,并用打印信息的方式,查看运行效果。

e)       MainClass

                        i.              程序入口。创建4个普通窗口,1vip窗口和1个快速窗口。

                      ii.              用定时器,按照比例定时创建随机客户,即号码。分三种:vip、普通和快速。

f)         Constants

                        i.              用于定义用到的常量

3.  Executors类的使用:

a)       使用public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)

方法创建延迟的线程池

b)       public static ExecutorService newSingleThreadExecutor()

创建一个使用单个 worker 线程的 Executor

4.  整体思路:

a)       银行中有4个普通窗口,一个vip窗口和一个快速窗口。有一台NumberMachine,当开始营业时,一个客户到NumberMachine拿到一个号码,所有窗口则根据号码的类型开始叫号。客户则到叫他号的窗口去办理业务。当客户越来越多时,六个窗口显然不够。就会有许多人等候,如果是普通客户就好办了,人们就等着。但vip客户和快速客户会优先办理业务,其他即将办理业务的普通客户需等待,所以vip窗口和快速窗口有两个供能。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值