张家宇-Google Map拼车网中信息撮合系统的设计与实现(7)

2019-03-16 21:02

式处理类和子类之间的关系,这些关系通过继承建立,是静态的,在编译的时候就确定下来了。对象模式处理对象间的关系,这些关系在运行时刻是可以变化的,具有动态性。

图2-13 Gof设计模式

在设计中运用到的两种设计模式:

1. 观察者模式

观察者模式(有时又被称为发布/订阅模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。

23

图2-14 观察者模式结构图

在什么时候运用:当抽象个体有两个互相依赖的层面时。封装这些层面在单独的物件内将可允许程式设计师单独地去变更与重复使用这些物件,而不会产生两者之间交互的问题;当其中一个物件的变更会影响其他物件,却又不知道多少物件必须被同时变更时;当物件应该有能力通知其他物件,又不应该知道其他物件的实做细节时。

2. 单例模式

单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。

实现单例模式的思路是:一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getInstance这个名称);当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用;同时我们还将该类的构造函数定义为私有方法,这样其他处的代码就无法通过调用该类的构造函数来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例。

单例模式在多线程的应用场合下必须小心使用。如果当唯一实例尚未创建时,有两个线程同时调用创建方法,那么它们同时没有检测到唯一实例的存在,从而同时各自创建了一个实例,这样就有两个实例被构造出来,从而违反了单例模式中实例唯一的原则。 解决这个问题的办法是为指示类是否已经实例化的变量提供一个互斥锁(虽然这样会降低效率)。

24

2.5 SSH构架简介

SSH框架是采用Struts+Spring+Hibernate整合而成的,SSH是分层思想的完美诠释。为Web运用的各层都提供了良好的框架整合,最大程度降低系统各层的耦合,简化了复杂的表现和逻辑处理,提高了开发的效率,增强了系统的可扩展性和维护性。

这三个框架在Web运用中都有各自的侧重点:

Struts注重表现和逻辑耦合的降低,主要把业务逻辑层和表现层分开,并不涉及业务层与持久层的关联。

Spring主要是对业务层的层次细化,即更深层次的降低了耦合程度。它利用延时注入思想组装代码,提高系统的可扩展性和灵活性,并通过Spring AOP模块实现集中式业务处理,减少代码重用。

Hibernate主要负责Java对象和关系数据库之间的映射,其实质上是一个提供数据库服务的中间件,利用数据库以及一些配置文件如hibernate properties、XML Mapping等为应用程序提供数据持久服务。

SSH整合了三个框架各自的特点及Web应用分层思想,并为Web应用各层都提供了相应的整合策略。整合框架以Spring框架为核心,向下整合Hibernate进行持久层访问,向上整合Struts使用MVC模式控制,可以清楚划分应用的层次。同时采用依赖注入思想,极大降低了层间耦合。通过XML配置文件装配组件,使各模块之间的调用从代码中分离出来,从而降低 了系统各层的耦合度,易于维护和扩展。此整合框架已经广泛应用到相关行业中。

本章小结

本章主要介绍了项目中将要用到得几门技术:AJAX技术、XML技术、空间数据库技术、设计模式和SSH框架。就几门技术的发展历史、技术特点、工作原理和使用方法做了简要地介绍。在下一章,将就撮合系统的分析与设计做深入的探讨。其主要内容包括需求分析、技术调研数据库的设计与封装和信息撮合系统的整体设计几个部分。

25

第三章 信息撮合系统的分析及设计

本章主要是介绍系统的分析与设计,主要就系统的需求分析,并对一些即将遇到的技术难点进行技术调研,然后根据实际情况对数据库设计,最后对信息撮合系统整体设计。下面将分4小结对个主要部分进行一一阐述。

3.1 需求分析

GoogleMap拼车网系统主要分为4大块:个人信息管理、线路发布、线路搜索和撮合。如图3-1所示。本小节就撮合部分的需求进行分析。

图3-1 拼车网系统功能分类结构图

信息撮合系统主要需要实现新消息提示、用户评价、乘客申请和车主邀请几大功能,所以我们可以将系统分为以下几个模块:新消息提示、评分、乘客申请及车主邀请。具体地分析留在各个小节中展现,以下简要介绍这几个模块所要实现的功能:

? 新消息提示模块,实现用户在使用系统是当有新消息给该用户时及时地提醒他注意查收;

? 评价模块,针对车主发布的某一线路已经撮合成功了,向该成功撮合的各组员发送其它人的评价邀请,记录各评分记录;

26

? 乘客申请及车主邀请模块,针对车主或是乘客的搜索后的选择结果,对双方进行撮合,以达到成功匹配的功能。 本系统用例图如图3-2所示。

新消息提示模块<><>评价模块<>用户乘客申请及车主邀请模块图3-2 信息撮合系统用例图

3.2 技术调研

在以上分析的基础上,我们项目组进行了详细地分析,觉得实现起来的技术关键点集中在以下几个方面:新消息提醒的及时性体现、数据库存储方式的选择、消息的过程形式、前后台数据交互的形式、撮合时信息对信息的处理和线路撮合成功后的评价生成。以下就分几个小节对具体的这六个方面的问题进行分析和解决。

3.2.1 新消息提醒的及时性体现

在这个模块中主要需要实现的是对用户及时的提示有新消息。在这里主要要对用户及时的提醒,当然这样的及时也不是说要求及时到向QQ聊天中那样实时会话,这样的及时只需要有消息,客户能在3分钟之内收到。

这里有两种实现方法:一种是用户登陆以后就向服务器保持一个连接,当有新消息到达的时候,服务器主动的将消息推至客户端;方法二是客户端每隔一段时间向服务器发送一个请求,要求服务器查询看有没有新消息需要达到。

这两种方法说得通俗一些就是服务器端“推”和客户端“拉”。具体分析以后发现,服务器端“推”的方法需要时刻保持一个连接,当用户数过多时,开销比较大,对服务器的压力比较大,不利于服务器的并发处理,这样的方法也相对比较传统的,不是很AJAX;客户端

27


张家宇-Google Map拼车网中信息撮合系统的设计与实现(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:-信息提示

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: