- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
银行业务调度系统_张孝祥讲述
面试题系列
讲师:张孝祥
—银行业务调度系统
对每个程序员来说,没有学不会的技术,只是没有那么多的时间与精力!如果能用最少的时间学透自己想要的技术,是程序员感到最幸福的事情!
程序员要学的知识细节实在太多,程序员要把一个知识完全搞明白所走的弯路太多,一个程序员积累的知识量等到可以从容面对工作时,又发现自己的体力已经被前些年的学习和摸索掏空和耗尽了!每个程序员都在经历这样的轮回,程序员网校在想:“能否让程序员的职业生涯更长些?程序员的工作变得轻松些?”
如果要想让程序员的工作变得简单些,首先就应该让技术学习变得轻松!如果一个人把自己通过一年精心梳理出来的某个经验一针见血地用一个小时交给了其他的千万人,其他人岂不节省了很多很多的宝贵时间吗?如果有很多有经验的人士都来开放、交流、共享自己的经验,程序员的工作还会那么辛苦吗?
程序员网校必将精心制作每个技术点的文字与视频教程,尽可能一针见血地讲解清楚问题的本质和最大限度地节省学习者的学习时间,让程序员把富余的时间投入到工作和生活中去,为提高程序员的生活状况尽最大努力!
程序员网校的发展理念
背景介绍
软件开发公司现在都越来越精明和狡猾了,他们把日后工作中要解决的问题、并且是他们自己都很难解决的问题拿出来让面试求职者去搞, 不管面试求职者的水平怎样,他们都说谁能搞定,谁就来上班,这样至少求职者在进公司之前就已经为公司做了贡献。 软件公司这招够狠、够高!
以前我们讲过有一个学员去国内某大型的软件外包公司应聘,要求的薪水是7k,该公司给了他一道面试题,就是要做一个模拟的交通灯管理系统,并说公司外包了一个法国交通系统的项目,现在就是在替做这个交通系统的项目组招人,这个交通灯管理系统就是招聘进来的人上班后要开发的项目模型,如果他在家三天内能够做出来,他就可以入职上班了,并且他要求的薪水则不是任何问题,还可以更高一些。” 后来又有一个学员去这家公司面试了,也是让他做交通灯管理系统, 当我把答案给他们俩后,第一个同学顺利上班了。后面那个同学由于晚去一步,该公司说交通系统项目组的人已经招到了,不能按原计划为他提供职位了。但是,该公司又说他们另外还有一个银行的项目,银行项目组还要招人,如果我们的第二名学员愿意,可以再回来做一个银行系统的题目,如果做得出来的话,就可以进入该公司的银行项目组。”
这就是我们今天要讲解的题目的来源!
银行业务调度系统的项目需求
面向对象的分析与设计
有三种对应类型的客户:VIP客户,普通客户,快速客户 ,异步随机生成各种类型的客户,各类型客户在其对应窗口按顺序依次办理业务 。
首先,经常在银行办理业务的人更有利于理解本系统,例如,我经常陪老婆跑银行,对银行的这个业务算是比较熟悉了,我知道每一个客户其实就是由银行的一个取号机器产生号码的方式来表示的。所以,我想到要有一个号码管理器对象,让这个对象不断地产生号码,就等于随机生成了客户。
由于有三类客户,每类客户的号码编排都是完全独立的,所以,我想到本系统一共要产生三个号码管理器对象,各自管理一类用户的排队号码。这三个号码管理器对象统一由一个号码机器进行管理,这个号码机器在整个系统中始终只能有一个,所以,它要被设计成单例。
各类型客户在其对应窗口按顺序依次办理业务 ,准确地说,应该是窗口依次叫号。
各个窗口怎么知道该叫哪一个号了呢?它一定是问的相应的号码管理器,即服务窗口每次找号码管理器获取当前要被服务的号码。
如果我不是多次亲身经历银行的这种业务,再加之积累了大量面向对象的应用开发经验,我也不知道能否轻松进行这种设计,能否发掘出其中隐含的对象信息,我真说不出具体的经验是什么,就是日积月累出来的一种感觉。难道这就是传说中的:“只可意会,不可言传?”
类图
画图非常有助于理解和分析问题,你还有比画图更好的办法吗?
NumberManager和NumberMachine类
NumberManager类
定义一个用于存储上一个客户号码的成员变量和用于存储所有等待服务的客户号码的队列集合。
定义一个产生新号码的方法和获取马上要为之服务的号码的方法,这两个方法被不同的线程操作了相同的数据,所以,要进行同步。
NumberMachine类
定义三个成员变量分别指向三个NumberManager对象,分别表示普通、快速和VIP客户的号码管理器,定义三个对应的方法来返回这三个NumberManager对象。
将NumberMachine类设计成单例。
ServiceWindow与CustomerType枚举类
CustomerType枚举类
系统中有三种类型的客户,所以用定义一个枚举类,其中定义三个成员分别表示三种类型的客户。
重写toString方法,返回类型的中文名称。这是在后面编码时重构出来的,刚开始不用考虑。
Service
文档评论(0)