------------------------------------------------------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培训   期待与您交流-----------------------------------------------------------

posted on 2011-09-15 15:26  www_ding@163.com  阅读(164)  评论(0编辑  收藏  举报