1. JHotDraw框架概述
开发应用程序时, 大多数情况下会反复处理一些相同的事情: 管理应用程序的生命周期, 事件处理, 线程管理, 本地化资源持久化处理. 为了节省时间与精力, 开发一个可复用的框架以节省开发成本显得非常有必要. 而应用程序框架正是提供多数应用程序都会用到的基础设施(infrastruture), 以节省重复开发的成本, 并提高程序的可维护性. 框架常以可复用类库形式导入到程序中.
框架常常会令人望而却步, 因为框架必须是设计良好的,而良好的设计总是以复杂和庞大为代价. 对于比较小的应用程序来说, 引入大型框架可能使原来的应用程序复杂化, 甚至比没有使用框架还费力. JHotDraw的框架并非是庞大和复杂的(不过随着版本的升级,它已经变得越来越庞大), 它致力于减轻使用框架的成本. 它提供了开发基于swing的应用程序的核心架构,包括程序生命周期控制, 资源管理, 事件处理, 线程管理和本地存储等功能.
2. 框架架构
整个JHotDraw框架的api都位于包: org.jhotdraw.app . app包定义了Application, ApplicationModel, view等接口. 正如你所想, JHotDraw框架正是构建在MVC模式之上, 其中Application封装了控制应用程序生命周期的方法:
1. init() 初始化程序;
2. launch() 启动程序;
3. start() 开始运行;
4. stop() 停止运行;
5. destroy() 退出程序;
构建一个基于JHotDraw应用程序框架的基本步骤为:
1. 定义一个View
2. 创建Application,并启动它.
详见代码:
HelloView.Java
import java.io.IOException;
import java.net.URI;
import org.jhotdraw.app.AbstractView;
import org.jhotdraw.gui.URIChooser;
public class HelloView extends AbstractView{
public void clear() {
}
public void read(URI uri, URIChooser chooser) throws IOException {
}
public void write(URI uri, URIChooser chooser) throws IOException {
}
}
HelloApplication.java
import org.jhotdraw.app.Application;
import org.jhotdraw.app.DefaultApplicationModel;
import org.jhotdraw.app.SDIApplication;
public class HelloApplication {
public static void main(String[] args) {
Application app=new SDIApplication();
DefaultApplicationModel model=new DefaultApplicationModel();
model.setViewClass(HelloView.class);
app.setModel(model);
app.launch(args);
}
}
运行效果:
图1 org.jhotdraw.app包结构图
图2. JHotDraw MVC架构
图3 org.jhotdraw.app.Applicatioin 接口契约
未完待续.....