`

JHotDraw之旅: 3.2 MVC架构

阅读更多

3.2 MVC架构


这里只介绍JHotDraw框架的MVC模式. 关于MVC,扯开了三天三夜也说不完. 如MVC是什么, 为什么要用MVC, MVC的优点和缺点有哪些, 什么是改进的MVC等等等等, 这些问题你都可以Google一下,  这里只简单概述.

  

MVC发明于80年代,最早是运用在smalltalk上的. MVC试图将视图,控制器和模型分离,使之成为三个独立的部件以提高代码可复用率及可维护性.

 

视图:即肉眼看到的界面(官方的说法是:用户看到并与之交互的界面便为视图),视图只负责显示数据或其它可与用户交互的元件(按钮,菜单和链接等).


模型:模型是对现实数据和业务规则的模拟,也可以说是对数据和规则建模的结果. 模型为众多视图提供了数据来源. 对模型进行分离的最大好处就是一个模型可以被多个视图重用, 既减少了代码的重复量, 也提高代码的可维护度.

 

控制器:控制器接收用户的输入(操作)并调用模型和视图去完成用户的需求. 如博客网站中, 当用户编写完博客点击(页面上的)提交按钮时, 控制器接收请求并将请求交给相应的模型去处理, 而控制器本身对请求不做任何处理. 控制器发送完请求后, 根据模型返回的信息调用相应的视图显示处理的结果.


MVC的好处在于重用了大量的代码, 并且极大地提高了代码的可维护性. 比如在一个交友网站中, 如果你的数据从mySql迁移到noSql上, 你只需要修改模型的内部逻辑, 而无需修每个页面都需改.

 

 

 

再来看JHotDraw的MVC,

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); 
    }
}

  

 

首先是模型的建立(model)(即上面第8行代码). 这里的model不是业务逻辑的model, 而是应用程序的model. 它是在应用程序层次上对应用程序建模而来的. Model封装了程序名称, 程序版本号以及一系列的action(控制器)(model的详细构造将在下面的章节论述). model还存放了应用程序的视图(view)(第10行代码).  这样, 当程序运行时, application便调用model的getView()方法来获取视图并将其显示, 而用户通过点击控制器(按钮,菜单)激活控制器, 控制器将用户的操作传送给model处理, model将处理完之后, 显示相应的视图来告知用户的操作结果.

 

下面是应用JHotDraw框架的程序启动顺序图 (点击查看原图):

 

 

 

 

 

 

 

 

 

  • 大小: 147.9 KB
3
2
分享到:
评论

相关推荐

    JHotDraw5.2.zip

    JHotDraw的特色在于它的灵活性和可扩展性,它使用了模型-视图-控制器(MVC)的设计模式,使得开发者能够独立地修改和扩展各个部分。此外,JHotDraw支持拖放操作、图形的复制粘贴、撤销重做等常见功能,使得图形设计...

    【转】开源项目JHotDraw分析报告

    JHotDraw的设计遵循了MVC(Model-View-Controller)架构模式,这种模式将应用逻辑、用户界面和数据模型分离,使得代码更易于维护和扩展。同时,它采用了插件化设计,使得开发者可以方便地添加新的图形元素或工具,...

    JHotDraw源码

    4. **模型-视图-控制器(MVC)架构**:JHotDraw遵循经典的MVC设计模式,`Drawing`类代表模型,存储图形组件;`DrawingView`是视图,负责渲染模型;`DrawingEditor`则是控制器,协调模型和视图的交互。 5. **事件...

    JHotDraw:JHotDraw HTML 编辑器

    #JHotDraw HTML 编辑器 第 39 组 - CSE 2102 组项目 该软件允许用户以 WYSIWYG(所见即所得)格式创建 HTML。 用户只需具备一定的 HTML 知识即可保存、导出、加载和修改文件。 用户将找到用于添加图像、视频和链接的...

    java开源图元绘制工具JHotDraw

    2004年下载的JHotDraw开源程序,一个学习设计模式、面向对象设计和开发、java的非常经典的例子。

    jhotdraw.rar_软件设计/软件工程_Java_

    Jhotdraw的核心特性之一是它的模型-视图-控制器(MVC)架构,这是软件设计中的一个关键模式。MVC将应用程序分为三个主要部分:模型负责处理数据,视图负责显示数据,而控制器则负责处理用户输入并协调模型和视图。...

    状态图绘制工具

    本文将深入探讨如何使用一款基于JHotDraw源码开发的单层状态图绘制工具,该工具支持三种不同的遍历算法:CPP(中国邮递员算法)、广度优先算法和简化的广度优先算法。 首先,让我们了解JHotDraw。JHotDraw是一个...

    Java画图源代码

    4. **JHotDraw框架**:压缩包中的"jhotdraw"可能是一个开源的图形编辑框架,它提供了图形绘制和编辑的功能,常用于创建图形编辑器。JHotDraw提供了一些基本图形类,如矩形、椭圆、线等,并支持图形的拖放、缩放、...

    java实现小型函数画图板(含源代码、报告、打包的jar文件)

    java课程设计的一个题目。本程序可以画各种函数曲线,功能有: 1.新建、打开、保存画图 2.多种方式输入函数作图 3.可设置画笔颜色、大小 4.可以放大、缩小 5.可以移动坐标和图像 6.实时显示鼠标经过的坐标 ...

    java开发的画图工具源码IDEA工具

    JHotDraw是一款基于Java的开源画图工具,它提供了丰富的图形绘制和编辑功能,非常适合进行设计工作或者教学演示。该工具的源码开放,使得开发者可以深入学习其内部机制,同时也可以根据需求进行定制化开发。 ...

    NetLogo-手冊

    * JHotDraw:一個 Java 的繪圖庫。 * MovieEncoder:一個影片編碼庫。 * JpegImagesToMovie:一個將 JPEG 圖片轉換為影片的庫。 * JOGL:一個 Java 的 OpenGL 實現。 * Matrix3D:一個三維矩陣庫。 * ASM:一個 Java...

    netlogo用户手册

    NetLogo依赖于一些第三方库,如MersenneTwisterFast用于随机数生成,Colt提供高性能的数学和统计函数,MRJ Adapter用于Mac OS X平台的兼容,Quaqua提供跨平台的GUI外观,JHotDraw用于图形编辑,MovieEncoder和...

    基于SVG的图形交换标准及规范化研究

    在实现过程中,作者设计并开发了一个基于开源软件JHotDraw的图形编辑器。JHotDraw是一款用于创建图形用户界面的工具,它提供了一套图形编辑的基础框架。通过分析电气连接图的结构并设定图形转换规则,该编辑器能够...

    JAVA上百实例源码以及开源项目源代码

    简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!...

    IntelliJ IDE热部署最新插件

    除了JRebel,还有一些其他开源的热部署解决方案,如`JHotDraw`或`DCEVM`,它们也可以与IntelliJ IDEA集成,实现类似的功能。这些工具各有优缺点,选择哪一种取决于你的具体需求和预算。 总的来说,热部署插件是现代...

    java开源包1

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,...使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包11

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,...使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包2

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,...使用了优秀的JHotDraw 5.2 框架。 activemq...

Global site tag (gtag.js) - Google Analytics