BankQueue


银行项目设计思路:

(名词就提炼成对象,动词就提炼成功能方法)

1、所有设计的可能的对象:

                   窗口,客户,对应都是三种,快速,普通,vip;1:6:3;数据库;

 

2、各对象的功能方法:

                   窗口:业务办理时间设置;办理业务;

                   客户:排队;(像这种有固定规律的动态的增减情况,可以用集合;

 

3、最简化的整体中的对象有:核心对象是;窗口

 

4、每个对象可以定义的内容有哪些?

         窗口:设置办理业务的设置时间;

                     办理业务:

 

可以用代码体现的技术:

1、因为有三类业务,可以对窗口用接口或者父类提炼一下,三个业务只需要重新定义核心的业务分布即可;用父类,因为有一些方法不必要重新写;

或者单独把业务封装,作为参数传进去也行;

2、每个窗口的业务都是独立的,互补相干的,所以用多线程的方式;

3、因为是银行,肯定所有窗口的数据都是共享的;这里需要定义一个数据库,作为构造方法的参数传入到每个窗口;这是很重要的共享数据和资源的一种方式;

 

视频笔记:

 

1、要注意一点要注意,对象的考虑一定要涉及到的所有的有的对象;如这里的号码管理器,就容易忽视;

2、一定要严格分对象来设计,不可以把所有的对象的工作搅在一起;思路一定要清晰;

3、变量类型尽量面向父级或者接口,这样使用起来会更加灵活;

4、用枚举和switch语句结合来代替ifelse,可以提高效率;

         用switch语句使用枚举时,可以不需要写枚举的类名;

         用到的一些Constants常量 要单独定义一个类;

要有这个定义常量的意识;不能都用硬编码的阿拉伯数字,不好;

 

思路总结:先把整个工作流程每一个步骤都弄明白,然后从中抽取对象和方法并将他们归到某一个对象类;在针对该类进行针对性的细化设计;并且在归类的过程中彼此间的联系以及这个联系用什么技术体现要想明白;只有先把所有的设计细节想明白了,才能下笔写代码;

 

自己开始的思路是没有把业务逻辑搞明白,这里虽然是模拟的银行,但不是模拟的银行业务,而是模拟的外部的取号系统;是两个不同的业务逻辑;

 

 

 

 

一个完整的逻辑的设计:

 

1、首先所有的内都是通过主函数具体化的;所有的类也都仅仅是用于本项目的具体事物的一个抽象;并且最终通过主函数实例化并实现实际业务的逻辑关系;所有的实际业务都是在主函数下实现的,而其他的类不过是对业务的某一些特征进行封装;是业务的实现过程更有条理;更有顺序;是有章可循的;

 

2、这是一个取号系统,不是银行业务,不要把业务逻辑搞混了;

在这点上,做项目设计必须一定要把项目的系统定位弄明白,不然定位不明白基本是很难得到正确结果的,只可能错错得正,而且还要错的很巧;

所以项目设计要首先要明白三个:

系统定位(干嘛使的,非常具体);最小的整体感;核心对象;

 

3、所以这个项目系统的对象应该有:

(1)号码管理的机器,可以生成三类票,并且互不相干;生成号码与银行窗口没有关系;

(2)银行窗口;4普通,1快速,1vip;

(3)三类客户;可以定义成枚举,然后其他两个对象的客户根据这个来引用;

其实可以把号码管理机器统一到客户里面来;因为客户的生成本来就与窗口是没有关系的;

 

4、整个项目的设计流程就是抽象的流程;在整个业务演变的流程中进行抽象类,抽象方法;抽象完毕后,最后有条理的在主函数中进行实例化;将抽象的东西有条理的并按照彼此逻辑实现出来;

 

5、尽量有javabean的思路,只要是取值,设置等都调用成方法的形式,不要通过调用别的类的属性来取值,这是不专业的,专业的别的属性取值是要通过方法的,因为属性一般都是私有的;

而且按照javabean的思路,提供方法将比提供属性更安全,因为提供方法可以同步,提供属性访问无法操作同步,因为访问的人多了;参考自己做的第一份结果,总出现脚标越界;

 

6、根据项目设计三个要先明白的:

系统定位:取号系统;

最小的整体感:窗口,和客户;

核心的对象:窗口;

 

窗口:可以定义的内容:

窗口开启的方法,提供人性化的考虑,可能有暂停业务;或者重新设置办理业务类型;故引入参数设置;即每个窗口自定义一个号码;

办理业务的方法;取号的方法;

其实三类业务可以用一个接口或者抽象父类,然后分别实现即可;

 

客户:可以描述的内容;

三类客户的元素;

生成号码的方法;定义在构造函数,初始化就生成;

取得号码的方法;

自定义的toString方法;

 

7、自己做时出现了安全问题,很大原因在于自己总是想简化代码,其实在自己对流程思路还没有弄得非常明白时,可以先把该封装的,全部都封装,然后再进行简化,甚至可以把看不懂的都封装,只简化看得懂的,然后再去简化封装的代码;

当实在没有理清思路时,可以按流程一个对象就写一个类,然后写完之后,再抽象;

切记,思路清晰是第一位,简化代码时第二位的;在项目设计的时候;

 

8、避免多线程访问时出现安全问题,可以把共享的资源让他不共享,即在判断之前就取出来,之后再判断,不要在取的时候判断;

 

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值