A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hanfei2511 中级黑马   /  2013-9-28 06:40  /  1181 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这是我学习完用面向对象设计方法解决交通灯和银行业务调度这两个案例的一些学习心得和总结
1,设计思路:通过对问题的分析,首先确定由那几个类需要定义,然后确定每个类具有哪些数据,再根据数据和题目要求,确定每个类上有哪些方法。
2,辅助手段:画图,将复杂的线索或关系直观化。
3,代码编写: 由外到内,首先定义出一个类的大体轮廓,其中的各个属性可以在需要时进行添加。
4,面向接口编程:在两个问题的解决代码中都有这样的代码:
(交通灯):private List<String> vechicles=new ArrayList<String>();
(银行业务调度):private List queueNumber=new ArrayList();
即右边创建的ArrayList实例传递给一个List类型变量,我们当然可以直接将List换为ArrayList,使得左右一致,但是因为List是ArrayList已经实现的接口类,这样就使得程序更加灵活,这也是利于面向接口编程的更专业的代码编写方式。
5,优化设计
a, 提高程序执行效率
if else语句和switch语句的选择:为什么if else语句 的执行效率比switch语句低?
if语句适用范围比较广,只要是boolean表达式都可以用if判断;switch语句支持的数据类型只有以下几种:int,byte,char,short,枚举型或字符型表达式。所以两者在比较时就限定在这些类型的范围内。
看下面的代码:
if(a==2)
//code
else if(a==4)
//code
else
//code
对比:
switch(a){
case 2:
//code
case 4:
//code
//code
}
在if语句中每一句都是独立的,在if和else if两句中每次比较都会将条件中的两个数从内存中取出读入寄存器进行比较,而a不变却被读入了两次,而在switch语句中首先确定要比较的是a,它只被读取一次,后面每次比较都知道需要比的对象是a,
所以在需要多个条件判断的情况下,如果可以使用switch语句,会比if节约许多资源,有利于代码执行效率。
当然switch语句只能取代if语句中的部分功能。比如有限的数据类型、只可以进行等式比较等等。所以可以根据自己的需要来选择合适的方式。
b,提高结构紧凑度
类的继承实现:
如果几个类的功能中只有一个或几个功能有差异,其他行为相同,那么可以先定义一个类,将这有差异的一个或几个功能抽抽提出来,做成方法,然后让其他几个相关的类从这个类继承,即作为这个类的子类,然后在子类中覆盖父类的这一个或几个方法即可。
常量处理:一般将程序中使用的多个常量组合在一起形成一个类,便于数据的管理的程序代码的紧密。
c,特定设计模式的使用
单例设计模式:
在银行调度业务中的NumberMachine.java就使用了单例设计模式:构造方法私有化,所以不可以直接实例化;具有一个私有的静态变量,用于保存这个类唯一的实例对象,对于外部对象不可见,只可以通过getInstance方法才可以获得;自身提供了static方法(getInstance())返回自己的一个实例,
这也是外部对象获得单例类实例的唯一途径。getInstance方法会首先检查这个私有的变量是否已经被初始化,如果没有,就创建一个实例保存到这个变量中,然后返回这个实例;如果已经被初始化,则直接返回这个实例。
单例设计模式的好处:控制资源的使用,通过线程同步来控制资源的并发访问;控制实例产生的数目,节约资源;在不建立直接关联的条件下,让多个不相关的线程间实现通信,即数据共享。
别人提到:配置信息类、管理类、控制类、门面类和代理类通常被设计为单例类,Java中的Struts、spring框架、.Net的Spring.Net框架,以及PHP的Zend框架都大量使用了单例模式。(这些内容我还不是很了解,先将这些信息保存下来,以后随着接触的增加再慢慢理解。)
8,线程调度和java线程并发库的应用。等等。

希望大家也谈谈在Java程序设计时常用到的进行程序优化的方式方法,让我学习下啊,谢谢啦。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
Morning!~~~~~~~~~~~~~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马