构建基于MVC+Observer模式的、艺术性的移动开发框架(KJAVA版)
Author:孙东风
Date:29/11/2007
做移动平台的开发不知不觉已经几年,先后接触过Kjava、Symbian、Windows mobile平台,做过游戏,也做过应用,而且以联网的居多。
我也时常辗转于不同平台间代码的移植,Java到C++、C++到Java,期间大多的时间浪费在平台框架的不一致性上。
而移动开发的平台又层出不穷,继以前的Kjava、Brew、Symbian、Palm、Linux、Windows mobile又先后出现了Gphone和iPhone平台。
可以想象的是,在不远的将来会有越来越多的移动开发平台。
于是,我业余时间时常在想,如果能有那么一套框架,每个公司都采用这个开源的框架来进行程序的架构,该能节省程序员多少累死的脑细胞啊!
当然,这么一套开源的首先应该是优美的、艺术性的,我一直思考如何运用艺术的眼光来看待编程。每个人都有爱美之心,每每读到别人层次关系藕断丝连的代码时,总是忍不住心情浮躁,更多时候是读了一半读不下去了。也就无从领会编写者的意图,那么程序做为一门程序员之间交流的工具也就无法彻底的发挥应有的作用。
而一份艺术性的代码是应该让后来者容易产生思维的共鸣的,艺术是简洁而优美的。
这份文档里我尝试努力构建这么一个有艺术性的移动开发框架,它有Java版本的、也有C++版本的,那么在Kjava平台和Symbian、Windows mobile平台之间移植的时候,至少可以节省不少力气。更重要的是,如果你能领会到这套框架,那么程序员之间的交流也就更容易和更方便。
这只是我一个美好的愿望,当然本人能力有限,未必真的能写出这么伟大的框架,所以也就希望更多的同行多提意见,“三个臭皮匠顶个诸葛亮呢!”。
我首先构建的是Kjava版本的移动开发框架,在这个版本完工之后,会着手Symbian版本的框架开发,关于Symbian版本的消息,可以先参考我之前写的一篇文章:
Symbian中所体现的软件编程艺术
http://blog.csdn.net/dongfengsun/archive/2007/04/08/1556704.aspx
那么怎么样的框架才算艺术性的框架?在我有限的理解和开发经验中,我觉得一份艺术性的框架应该有如下主要特征:
一:界面和数据的高度分离性,即把界面显示和数据的处理完全分离开来,把它们的耦合度减少到最低。
二:框架应该通俗易懂,而设计模式做为程序员之间交流框架的主要工具,在框架设计中应该占据重要地位,我们的框架设计中主要采用MVC+Observer模式(这里把MVC也做为Design Pattern之一)。
三:代码应该具备良好的可扩展性,任何一个模块的剥离、置换并不会对其它模块产生大的影响。
当然,如上三个特点是一个很高的境界,我只能尽自己的能力和经验来做到,更多的是希望大家能贡献出自己的经验,我们一起交流完善。
那么基于以上几点,我设计了如下的框架图:
我先大致来说明一下这个框架图。
第一,整体的框架采用了MVC+Observer模式,相信稍微有经验的同行对这两个模式并不陌生,那么同行之间交流起来也更容易领会对方的意图。
第二,整个框架的界面显示部分在View类及其前端,这部分内容也蛮多,我会抽取独立的时候专门来讲。但有几个原则,为了提高界面的可复用性,我把所有的界面控件元素全部抽取出来,原则上尽量不使用Kjava提供的高级UI。这些控件元素包括Button、SoftKey、ScrollBar等,这样以来即便把界面部分剥离出去,那么这些控件仍可以无影响的被复用。
所有的屏幕显示是由不同的Screen来组成,而View(Canvas)来负责不同Screen之间的切换,Screen来充当Layout的角色。
当然这些不同模块之间的切换、消息的派发都是一个问题,在接下来的专题里我会专门讲到。
第三,秉承“高度分离界面和数据”的原理。那么我们不应该让界面和数据里有任何耦合的地方。而界面是由View负责,数据及处理是由Model负责。而这两个模块之间又需要消息的传递,因为数据处理完了你要给用户一个结果啊,那么结果就需要显示在界面上。所以Observer模式很恰当的充当了这个角色。首先,Control实现Observer的接口,对屏幕的更新及显示进行一定程度的“封装”。其次,Control通过变量m_Model传递一个Observer给Model,从而实现对Model部分“监听”。
第四,Model后面的是“网络处理”、“本地文件系统”、“数据的存放和处理”等模块。
第五,我们看到View类里有个ControlQueue的队列,Model类里有个EventQueue的队列。ControlQueue队列负责维护View上所有的“Layout”,包括那些Screen应该被“激活”,从而处理消息。而EventQueue这个后台队列负责维护消息,在大部分的联网开发中,都会传递和接受网络数据包。那么这个EventQueue就是负责维护数据包,它在Model的线程中被“监听”,一旦有数据包到达,它就会分析这个数据包,分析完了调用Observer“监听器”把数据的状态变化反映到View类里。
这部分我们重点从high-level的层次设计了整个框架的流程,那么下面的专题里我们会具体应用这个模式来设计一个应用,并给出框架的实现代码。
分享到:
相关推荐
在构建MVC框架时,设计模式如Observer(观察者)和Command(命令)模式被广泛应用,以增强框架的灵活性和复用性。 - **Observer模式**:此模式定义了对象间的一对多依赖关系,使得当一个对象(目标)的状态发生变化...
在这个名为“运用MVC模式及观察者模式的java小程序”的项目中,我们重点探讨了两种经典的设计模式:Model-View-Controller(MVC)模式和Observer(观察者)模式。这两种模式在JavaWeb开发中扮演着至关重要的角色。 ...
《C++设计模式--基于Qt4开源跨平台开发框架》一书主要探讨了如何在C++编程中利用设计模式,并结合Qt4框架进行高效的跨平台应用开发。设计模式是软件工程中的重要概念,它们是经过时间和实践验证的解决特定问题的模板...
在这个特定的案例中,我们将深入探讨如何在Vanilla JavaScript(原生JavaScript)中实现一个Todo List,利用Model-View-Controller (MVC)架构模式以及Observer设计模式。这两种模式在现代Web开发中都是至关重要的...
Java Swing的MVC(Model-View-Controller)模式是一种用于构建用户界面的软件设计模式,尤其在GUI(图形用户界面)开发中广泛应用。MVC模式将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器...
此电子邮件服务应用程序是使用 JavaFx、套接字、mvc模式、Java 反射、基于 Observer 可观察模式的机制和多线程编程构建的 (1).zip
### 基于模式设计的MVC框架原理研究 #### 摘要 本文探讨了基于模式设计的MVC(Model-View-Controller)框架原理。MVC是一种广泛应用于Web开发的设计模式,它将应用程序分为三个核心部分:模型(Model)、视图...
Observer模式,也被称为“发布-订阅”模式,是软件设计模式中的行为模式之一。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Observer模式是实现...
MVC架构模式在Java开发中的应用 ...MVC架构模式在Java开发中的应用非常广泛,特别是在基于Web的应用系统中,它可以提高系统的可维护性、可重用性和可移植性,提高开发效率,并且使得系统更容易扩展和部署。
总之,MBMvc是一个旨在提升iOS应用开发效率和质量的Swift框架,它通过引入消息机制重新诠释了MVC模式,帮助开发者构建更加健壮、可维护的代码结构。学习和掌握MBMvc,对于提升Swift开发能力具有重要的实践意义。
PureMVC是一个轻量级的、基于观察者模式的MVC(Model-View-Controller)框架,它提供了一种组织代码的方式,使得应用程序的结构更加清晰,易于维护和扩展。该框架的核心思想是高内聚、低耦合,即每个组件都专注于...
**基于RxJava+Retrofit构建的Android基础框架详解** 在移动开发领域,尤其是在Android平台,高效、可维护的代码架构是提升开发效率和产品质量的关键。本文将深入探讨如何利用RxJava和Retrofit这两个强大的库来精心...
Observer设计模式,也被称为“发布-订阅”(Publish-Subscribe)模式或“依赖倒置”模式,是软件设计中的一种行为模式。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到...
MVC(Model-View-Controller)设计模式是一种软件设计模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式最初在Smalltalk环境中提出,后来在Java等其他编程语言中...
在本实验报告中,我们探讨了如何利用MVC(Model-View-Controller)模式来开发Java应用程序,特别是在创建一个贪吃蛇游戏的上下文中。MVC模式是一种软件设计模式,它将应用程序分为三个主要组件,使得各部分可以独立...
该示例是翻写一老外Observer Pattern的例子,本人觉得该示例是对该模式的非常精典的说明,于是花点功夫来翻写它,因为他的代码没有注释说明该模式的设计思想怎样体现在代码中去,所以,本人结合代码注释了关键代码的...
ASP.NET MVC框架是一种用于构建Web应用程序的软件框架,它基于模型-视图-控制器(Model-View-Controller,简称MVC)设计模式。MVC模式最早由Trygve Reenskaug在20世纪70年代末为Smalltalk平台提出,它被广泛应用于...