l ObjectInputStreamLoader.java 作为ObjectInputStream的子类,代理为存在的ClassLoader加载类。主要用于加载基本类型的数组对象。
l IndentedStream.java 这个工具类是用来产生源代码文件的
l InputStreamProducer.java 该接口按需提供一个输入流
l ClassCompiler.java 执行编译Java源代码的类,形如sun.tools.javac.*的功能,其实现实就是javac的一个外包,调用exec来执行javac的外部编译命令。
继承了ClassLoader,被JarLoader用来载入类和资源。这是一个比较值得仔细看得类,实现了一个简单的类装载器。
l Timer.java 工具类,用于内部的时间操作
l FileExtension.java 用来过滤文件的类,实现了FilenameFilter接口
l WindowCloser.java 工具类,用于捕获目标窗口的关闭事件
l AboutDialog.java BeanBox的About Dialog
属性编辑适配器,实现了PropertyChangeListener接口。它只有一个成员变量就是一个PropertySheet对象。
l public void propertyChange(PropertyChangeEvent evt)通过调用PropertySheet的wasModified方法来实现
l MessageDialog.java 弹出提示信息的对话框类
l MessageHeader.java 定义消息头部
l ErrorDialog.java 抛出一个模态的错误Dialog,继承了MessageDialog
l CustomizerDialog.java 作为一个普通的组件编辑器,封装了一个Dialog
使用该类来支持infoBus机制来和bean通信
l OurLabel.java 用一个字符串代表一个不可见的bean
l DoOnBean.java 在创建Bean的时候要执行的动作的接口
这些代码都是出自从事编程和设计很多年的资深专家之手,其中有很多技巧值得我学习,首先体会到的是使用单态模式,这样的好处在于可以在任何地方直接得到最顶层的BeanBoxFrame,而不用到处是用传递参数的方法来实现。对于源代码中所用的技巧,对于大家来说有的很熟悉,有的很陌生,同时要理解这些技巧也需要花一些功夫,只要理解为我所用,成就感还是蛮大的。
分析源代码是每个学习开发的人都会遇到的事情,无论是分析一份经典的代码比如什么的内核啊,或者比较滥的代码,就是公司以前的烂尾项目需要修改等。有的有文档,有的有注释,有的什么都没有,所以分析源代码难度不同,重要的是都先要提纲挈领的查看所有的代码,领会大概流程和总体框架,然后由这个框架查看关键的代码,这样对源代码的分析就会比较迅速,比较有代表性。最后就是学习其中值得自己关注的东西,比如设计思维,编程技巧等。
以前分析都没有认真地用文档记下来,当真正的用文档记下来的时候,才发现很多东西都不太会表述,成了“茶壶里面的汤圆,倒不出”。所以大家能够多练习一下,将自己所看所想得到用文档描述下来,对自己日后的分析描述能力一定会有所提高。
毕竟不是专家级人物,分析难免有所纰漏和不当之处,请大家指出,谢谢!我的email是chinascutface@hotmail.com。