- 浏览: 848296 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (379)
- struts (5)
- hibernate (16)
- spring (16)
- ssh (20)
- MySQL (16)
- 数据库脚本 (2)
- DownLoad (1)
- GAE (5)
- Java (103)
- LoadRunner (2)
- VF (1)
- 学习资料 (24)
- 软件使用 (21)
- 通信类 (4)
- 生活 (3)
- J2ME (1)
- 心理学 (1)
- Linux (26)
- Android (3)
- Oracle (1)
- 面向对象概念&面试准备 (11)
- ExtJs (2)
- Google Map (1)
- Flex (47)
- 算法研究 (1)
- share (20)
- python (1)
- MongoDB (7)
- centos6 (13)
- C++ (8)
- DB2 (3)
- C# (1)
- 代码片段 (24)
- Lucene (2)
- php (1)
- NodeJS (1)
- Express (1)
最新评论
-
shua1991:
已阅,我表示同意。
Eclipse统计代码行数 -
nakedou:
写的不错,挺详细的
在CentOS中使用 yum 安装MongoDB及服务器端配置 -
sjp524617477:
好方法
Eclipse统计代码行数 -
simpletrc:
<script>ale ...
Java写到.txt文件,如何实现换行 -
csdn_zuoqiang:
Apache Ftp Server,目前是1.0.4,非常好的 ...
Apache FtpServer在64位系统下服务不能启动解决方法
现在的软件越来越大,越来越复杂,体现在用户交互上尤为明显,导致相关设计开发不再像使用IBM RPG那样简单。开发人员需要了解很多的相关知识才能够开发出一个健壮的Rich Client, 本文就以设计模式为切入点,对此展开讨论,目的是让大家通过本文对GUI设计领域里的一些设计模式有个大概的了解。 看到这个题目,我估计绝大部分朋友会第一时间想到model-view-controller (MVC)模式。的确这个是在GUI设计领域里应用最为广泛的模式了,3个模块相互之间交互,大家耳熟能详,我就不多费笔墨了,不了解的朋友请察看相关资料。本文主要介绍一些大家可能还不太熟悉的模式,让大家对GUI设计领域相关的设计模式有个大概的了解。本文只会对所有的模式进行粗略的介绍,文章末尾列出了每一个模式的原出处,如果哪位朋友对某个模式特别感兴趣可以进行深入的解读。 Autonomous View 软件开发总是从小逐渐演变到大,从简到繁。 最初,一个Frame可能只包括一个Panel, 上面只有几个输入栏,几个按钮。可能包含一些展示逻辑(presentation logic),但是这些逻辑是非常简单的,这个时候我们应该使用Autonomous View模式,也就是只用一个类来实现所有的功能。具体来说就是每个window或frame一个类,把实现展示逻辑的代码直接写到view类中。这样做的好处就是方便快捷,缺点就是不太方便测试, 一个类实现了多种功能,任何一个功能的改变都导致类的改变。 随着软件的成长,当view及其相关的展示逻辑变得比较复杂时, view和展示逻辑就需要分开了,就好像当年business logic从service层脱离出来一样。这样做的好处是view和逻辑分离,代码易于共享,易于管理;逻辑功能可以重复使用,易于测试。还有很多其他的好处,介绍MVC的相关书籍已做了详细说明,我就不在这里展开了。 在进行view和逻辑分离的工作中,到目前为止有三种模式可以采用,她们分别是MVC, Model-View-Presenter (MVP), 以及我会重点介绍的Presentation Model. MVC 我在文章开始就提到了不会对她进行展开,不了解的朋友请参考相关书籍。 MVP 由Martin Fowler发现并进行研究,从根本上来说,她只是个MVC的变种。在MVC中view直接处理相关的GUI event,比方说,键盘鼠标事件,checkBox被选中,按钮被按等等。而在MVP中view接收到事件,然后会将它们传递到Presenter, 如何具体处理这些事件,将由Presenter来完成。从class diagram上来看,就是Presenter有View和Model的引用,Presenter负责来管理其他两个模块。跟据两者不同来看,MVC比较适合用来开发components, 而MVP比较适合进行applications的开发, 因为使用MVP导致绝大部分逻辑代码集中在Presenter, 而view变得非常简单, 适当采用良好的编码风格,可以让毫无经验的编码人员稍加培训立刻上岗,大大加速开发view的速度, Presentation Model 也是由Martin Fowler发现并进行研究,从根本上来说就是把所有的逻辑功能完全浓缩到model模块里去,这样我们就只有2个模块:View和Presentation Model。其中View和MVP中的View一样,具有上面提到的所有优点,而Presentation Model则起着承上启下的作用,她连接domain object并将其展现在view上。看到这里聪明的读者可能会发现这个模式有个缺点,就是在view, presentation model, 和domain object之间一定要保持同步。在其他两个模式中,这个功能可以由Controller和Presenter来完成。而在presentation model模式中却没有一个合适的地方来实现, 在view里肯定不行,在model里也不太合适。也就是说当我们使用presentation model进行开发时,我们所使用的框架必须要提供这种同步功能。在windows世界里 .Net data binding就是这种功能的实际实现。如果我们使用Swing开发,很抱歉,Swing没有这种功能。而作为Swing的扩展,JGoodies binding比较完美的解决的这个遗憾。 选择 模式已经介绍完了,到了选择的时候了。其实看到这里大家应该已经有个比较清晰的big picture了。那么当我们进行GUI开发时,何时选用什么模式呢? 我的建议是: 对于简单的view,直接使用Autonomous View. 开发component级别的GUI, 至少要使用MVC. 开发applications, 则应该采用MVP或者是Presentation Model 那么如果是开发application到底应该使用MVP还是Presentation Model呢?这应该是绝大部分开发人员关心的问题。Martin fowler在他的文章中说是it really comes down to how easy it is to do the pattern in your GUI environment and on your own personal tastes. 我觉得不完全对。还记得前面说presentation model有个缺点吧, 就是那个同步的问题。问题总是有两面性的,当我们换个角度来考虑这个问题时缺点就变成了优点了!简而言之,如果再开发中使用了像JGoodies这样的framework,她提供了完善的同步服务,那么我们应该毫不犹豫的使用presentation model, 因为同步问题已被framework解决,应用开发人员不需要投入时间在这些问题上。而相反,使用MVP的话,应用开发人员却不得不面对这些问题,直接导致开发周期延长。另外还有一个使用presentation model原因就是在swing中presentation model已经比较完善(请注意,是比较完善而非完美)得到了实现,比方说ListModel, TableModel,并且针对每一个model也都实现了同步。美中不足就是swing提供的每一个model都是针对具体GUI component的,而且没有提供一个全局同步策略。而JGoodies binding比较完美的解决的这个问题。 最后还要提到一个比较小的模式就是value model,她是value object的变种,她提供了一种set,get,和observe某个对象功能,这个对象通常是个Java Bean,当然也可以是其他的对象类型。这个模式在JGoodies中应用非常广泛,我会在以后的文章中作深入讲解。 相关连接: Autonomous View http://www.martinfowler.com/eaaDev/AutonomousView.html MVP http://www.martinfowler.com/eaaDev/ModelViewPresenter.html Presentation Model http://www.martinfowler.com/eaaDev/PresentationModel.html Organizing Presentation Logic http://www.martinfowler.com/eaaDev/OrganizingPresentations.html Value Object http://java.sun.com/blueprints/corej2eepatterns/Patterns/TransferObject.html JGoodies http://www.jgoodies.com
转载自: http://polygoncell.wordpress.com/2005/12/15/design-patterns-of-the-enterprise-rich-client/
发表评论
-
微信JS
2013-10-26 21:17 2106<div class="iteye-blog- ... -
ubuntu下MySQL用source命令导入sql文件出现乱码解决方法
2012-11-18 23:46 1602首先建立数据库的时候指明数据库编码如: CREA ... -
RandomAccessFile
2012-10-18 18:16 992public void run() { try { ... -
java中多种方式读文件
2012-10-18 16:53 997java中多种方式读文件一、多种方式读文件内容。1、按字节读取 ... -
FileChannelMain
2012-10-15 18:12 1122package scan; import java ... -
Apache FtpServer在64位系统下服务不能启动解决方法
2012-06-10 21:29 6946Apache FTPServer是一款用Java开发的 ... -
Java 集合类
2012-06-07 22:03 1855Java 集合类 1. 为什么要了解J ... -
short、int、long与byte之间的转换工具类
2012-05-31 11:05 4539/** * 各基础类型与byte之间的转换 * ... -
Linux Mint 13 配置JAVA 环境
2012-05-24 22:35 26680.1--下载 JAVA ... -
FatJar+Exe4j+Inno Setup 生成可执行的exe文件
2012-04-17 10:54 14701、fatjar 是Eclipse的一个免费的插件。它的 ... -
JPanel JTextField add Focus 获取焦点解决方案
2012-03-30 21:29 3033public class TabPagePanel ex ... -
JList List<E> Page 分页
2012-03-30 21:28 1771package view.retrieve.comps. ... -
JButton setAction的BUG
2012-03-23 10:53 1319今天在使用JButton的时候,想用setText()setI ... -
自定义JTabbedPane皮肤
2012-03-22 12:05 4747package ui; import java.awt. ... -
两个工具类
2012-03-17 21:27 904package com.retrieve.utils; ... -
两个工具类
2012-03-17 21:27 0package com.retrieve.utils; ... -
mysql、sqlserver、oracle分页,java分页统一接口实现
2012-03-13 17:56 0定义: pageStart 起始页,pageEnd 终止页, ... -
Invalid command: InetLoad::load
2012-03-06 16:41 1396Invalid command: InetLoad::load ... -
NIO: High Performance File Copying
2012-03-01 17:25 1217In a previous tip, I discussed ... -
自定义JList
2012-02-03 15:39 816自定义JList。
相关推荐
This book presents the topic of design patterns in Java in such a way that anyone can grasp the idea. By giving easy to follow examples, you will understand the concepts with increasing depth. The ...
《企业应用架构模式》是Martin Fowler撰写的一本经典著作,对于理解并构建大型、复杂的IT系统具有极高的指导价值。这本书深入探讨了在企业级应用开发中常见的设计模式和架构决策,旨在帮助开发者提高代码质量,提升...
, Key features include:, , * Introductory overviews of design patterns, the Java Foundation Classes (JFC), and the Unified Modeling Language (UML) * Screen shots of each of the programs * UML ...
The Joy of Patterns-Using Patterns for Enterprise Development
Chapter 1, Welcome to the Node.js Platform, serves as an introduction to the world of Node.js application design by showing the patterns at the core of the platform itself. It covers the Node.js ...
useful in the understanding of design patterns used by the Spring Framework and how it solves common design problems in the enterprise application, and they will fully appreciate the examples ...
Patterns of Enterprise Application Architecture By Martin Fowler, David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, Randy Stafford
The book begins by giving you an overview of Spring Framework 5.0 and Design Patterns. You will understand the Dependency Injection pattern which is the main principle behind the decoupling process ...
Learn the structure of design patterns and how they are written Understand different pattern categories, including creational, structural, and behavioral Walk through more than 20 classical and modern...
The book starts with a brief introduction to Go programming essentials and quickly moves on to explain the idea behind the creation of design patterns and how they appeared in the 90's as a common ...
Each pattern is accompanied with rich examples that demonstrate the power of patterns for a range of tasks, from building an application to code testing. We’ll introduce low-level programming ...
Explore and understand the design patterns of Redis through a wide array of practical use cases Learn about different data structures and the latest additions to Redis A practical guide packed with ...
Prior experience using AWS is required as the book focuses more on the patterns and not on the basics of using AWS. In Detail Whether you are just getting your feet wet in cloud infrastructure or ...