------------------------------------------------------Android培训 Java培训 期待与您交流-----------------------------------------------------------
根据业务逻辑分析业务对象:号码控制器 号码管理器 服务窗口 (刚开始自己分析的还有顾客类,回想起交通灯了,就想起顾客在这里其实就和交通灯的汽车一样)。
号码控制器管理这号码管理器,号码管理器生成三种客户(以前看书上有个电影院售票系统就有这种模式,生成的是三种座位,不过当时不懂,现在应该再次看看)服务窗口生成三种窗口。
学习困难点:内部类
new Runnable(){
public void run(){
Integer serviceNumber = NumberMachine.getInstance().getExpressManager().generateNewNumber();
System.out.println("第" + serviceNumber + "号快速客户正在等待服务!");
}
}
这里有点晕但又不知道怎么晕的。
有时间有必要加强下
学习心得:
1:编程要敏感度:
比如多线程的应用,在程序中多个方法同步运行时若是访问同一个资源(比如变量)就会引起冲突,而线程同步synchronized恰当的解决了这个问题
public class NumberManager {
private int lastNumber = 0;
private List queueNumbers = new ArrayList();
public synchronized Integer generateNewNumber(){
queueNumbers.add(++lastNumber);
return lastNumber;
}
public synchronized Integer fetchNumber(){
if(queueNumbers.size()>0){
return (Integer)queueNumbers.remove(0);
}else{
return null;
}
}
}
(自己没注意,看视频是猛然发现的,自己的敏感度不高)
2:要注意极限值:
在数组或者是反省集合中容易犯的错
public synchronized Integer fetchNumber(){
if(queueNumbers.size()>0){
return (Integer)queueNumbers.remove(0);
}else{
return null;
}
}
在没有判读size的情况下就容易数组越界异常
要享受自己编写代码是的感觉,要欣赏自己编写的代码,若果自己就瞧不起,就是难办了
编程要敏感度:
3:画图分析法:
画图分析该系统的对象关系
(在交通灯管理系统中张孝祥老师也提到过画图的好处)
4:单实例的创建
public class NumberMachine {
private NumberManager commonManager = new NumberManager();
private NumberManager expressManager = new NumberManager();
private NumberManager vipManager = new NumberManager();
public NumberManager getCommonManager() {
return commonManager;
}
public NumberManager getExpressManager() {
return expressManager;
}
public NumberManager getVipManager() {
return vipManager;
}
private NumberMachine(){}
private static NumberMachine instance = new NumberMachine();
public static NumberMachine getInstance(){
return instance;
}
}
5:看张老师行云流水般的写代码真是好啊,实际的生活经验和软件开发经验很重要啊
------------------------------------------------------Android培训 Java培训 期待与您交流-----------------------------------------------------------