论文部分内容阅读
摘要:根据应用系统业务需求如何选择一个易于维护,可复用性较好的平台架构是应用系统的关键。本文就中小学教师继续教育平台中采用的系统架构,从设计模式的选择到系统的设计与实现来讨论这方面的问题。
关键词:设计模式;抽象工厂;装饰器
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)05-00ppp-0c
1 引言
中小学教师继续教育是我们国家提高教师教学水平,拓宽教师知识面,迅速适应新课程内容,全面贯彻素质教育的关键环节。利用基于Internet的中小学教师继续教育平台,是打破传统的教师继续教育方法,提高中小学教师继续教育的效率,提升教育质量的关键步骤。
本文就建设中小学教师继续教育平台所采用的系统技术架构,从设计模式的选择到系统的设计与实现等方面来讨论,力求根据应用系统业务需求构建一个易于维护,可复用性较好的继续教育平台。
2 平台分析
中小学教师继续教育平台是教师通过网络进行交流互动的功能系统,允许教师动态地创建新的课程、编辑课程的内容、设置各种过滤信息以及管理注册用户等。如图1所示,通过该平台,学员(参加中小学继续教育的人员)和教师可以对课程进行交互,通过新章节功能发布新的章节,通过问题和答疑功能学员和教师进行相互交流。
图2 中小学教师继续教育平台的业务对象
每个课程包含若干章,而每一章由若干节组成的,这是一个聚集关系。这3种对象保存在数据库中,每一个对象都涉及到对象数据的创建、编辑、查询和删除。这3个对象对于不同的角色可操作访问权限是不一样的,只有系统管理员和课程管理员可以对课程相关数据实行操作,普通用户阅读课程内容和提出问题。
在中小学教师继续教育平台中,用户角色和权限是紧密联系在一起的。为了实现不同用户对不同业务对象的不同操作权限,通过设定一个统一的入口,在这个入口将检查客户端每次对数据的操作权限,如图3所示。
图4 课程生成器的设计
XML课程生成器和数据库课程生成器作为抽象课程生成器的两个具体实现,分别生成以XML方式和数据库方式存储的课程,而课程、章和节分别作为3个系列抽象接口,依靠不同的课程生成器实现方式,会产生不同的存储类型课程。如果以后课程以文件方式存储,只要添加一个文件类型的课程生成器和相应的类型的课程,平台其他部分就不需要修改。具体实现如下:
public abstract class ClassFactory
{
private static Object initLock = new Object();
private static String className = " com.jxjy.class.database.DbClassFactory";
private static ClassFactory factory = null;
public static ClassFactory getInstance(Authorization authorization)
{
if (authorization == null)
{return null; }
if (factory == null) {
synchronized(initLock)
{if (factory == null)
{... //从配置文件中获得当前className
try
{//动态装载类
Class c = Class.forName(className);
factory = (ClassFactory)c.newInstance();}
catch (Exception e)
{return null; }
}}}
//返回权限检查器用来限制授权对课程的访问
return new ClassFactoryProxy(authorization, factory,factory.getPermissions(authorization));
}
//创键课程接口Class的具体对象实例
public abstract Class createClass(String name, String description)
throws UnauthorizedException, ClassAlreadyExistsException;
//创键章接口Chapter的具体对象实例
public abstract ChapterThread createChapterThread(SectionMessage rootMessage)
throws UnauthorizedException;
//创键节接口Section的具体对象实例
public abstract SectionMessage createSectionMessage();
}
3.2 权限检查器的设计与实现
从上面的代码中我们发现,在ClassFactory的getInstance方法中最后的返回值似乎有些奇怪。它返回了ForumFactoryProxy的一个实例,为什么要这样实现呢。就是为了访问权限的控制,实现一个权限检查器。
在中小学教师继续教育平台中,因为有角色与权限的控制,对于课程、章和节的访问操作必须经过权限机制验证后才能进行。
以ClassFactoryProxy中的createClass方法为例,其实ClassFactoryProxy也是ClassFactory的一种抽象课程生成实现,它的createCLass具体实现如下:
public Class createClass(String name, String description)
throws UnauthorizedException, ClassAlreadyExistsException
{if (permissions.get(ClassPermissions.SYSTEM_ADMIN))
{Class newClass = factory.createClass(name, description);
return new ClassProxy(newClass, authorization, permissions);
}
else
{ throw new UnauthorizedException();}}
在这个方法中进行了权限验证,判断是否属于系统管理员。如果是,将直接从DbClassFactory对象factory的方法createClass中获得一个新的课程对象,然后再返回课程的子类代理对象ClassProxy。因为在课程中也还有很多属性和操作方法,这些也需要进行权限验证。
3.3 批量分页查询器设计
用户查询大量数据,从数据库不应该直接返回ResultSet,应该是Collection。但是有一个问题,如果这个数据很大,需要分页显示。如果一下子将所有页面要显示的数据都查询出来放在Collection,必然会影响性能。而批量分页查询器则不必将集合全部都展现出来,只有遍历到某个元素时才会查询数据库获得这个元素的数据。设计如图5所示。
图6 资料装饰器的设计
4 结论
本文针对中小学教师继续教育平台的灵活,变化大的特点,主要分析介绍了在实际开发中从设计模式出发所采用的技术架构。通过设计模式的采用使得我们的中小学教师继续教育平台实现了平台最初的设计目标,同时大大提高了系统的可维护性和可复用性。
参考文献:
[1]徐言声,译.设计模式解析(第2版).北京:人民邮电出版社,2006.
收稿日期:2007-12-16
作者简介:曾庆斌(1963-),男,广东云浮人,高级工程师,主要研究方向:软件技术开发,多媒体技术;陈华政(1981-),男,湖南株洲人,助教,硕士研究生,主要研究方向:图像处理与模式识别,软件应用。
关键词:设计模式;抽象工厂;装饰器
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)05-00ppp-0c
1 引言
中小学教师继续教育是我们国家提高教师教学水平,拓宽教师知识面,迅速适应新课程内容,全面贯彻素质教育的关键环节。利用基于Internet的中小学教师继续教育平台,是打破传统的教师继续教育方法,提高中小学教师继续教育的效率,提升教育质量的关键步骤。
本文就建设中小学教师继续教育平台所采用的系统技术架构,从设计模式的选择到系统的设计与实现等方面来讨论,力求根据应用系统业务需求构建一个易于维护,可复用性较好的继续教育平台。
2 平台分析
中小学教师继续教育平台是教师通过网络进行交流互动的功能系统,允许教师动态地创建新的课程、编辑课程的内容、设置各种过滤信息以及管理注册用户等。如图1所示,通过该平台,学员(参加中小学继续教育的人员)和教师可以对课程进行交互,通过新章节功能发布新的章节,通过问题和答疑功能学员和教师进行相互交流。

图2 中小学教师继续教育平台的业务对象
每个课程包含若干章,而每一章由若干节组成的,这是一个聚集关系。这3种对象保存在数据库中,每一个对象都涉及到对象数据的创建、编辑、查询和删除。这3个对象对于不同的角色可操作访问权限是不一样的,只有系统管理员和课程管理员可以对课程相关数据实行操作,普通用户阅读课程内容和提出问题。
在中小学教师继续教育平台中,用户角色和权限是紧密联系在一起的。为了实现不同用户对不同业务对象的不同操作权限,通过设定一个统一的入口,在这个入口将检查客户端每次对数据的操作权限,如图3所示。

图4 课程生成器的设计
XML课程生成器和数据库课程生成器作为抽象课程生成器的两个具体实现,分别生成以XML方式和数据库方式存储的课程,而课程、章和节分别作为3个系列抽象接口,依靠不同的课程生成器实现方式,会产生不同的存储类型课程。如果以后课程以文件方式存储,只要添加一个文件类型的课程生成器和相应的类型的课程,平台其他部分就不需要修改。具体实现如下:
public abstract class ClassFactory
{
private static Object initLock = new Object();
private static String className = " com.jxjy.class.database.DbClassFactory";
private static ClassFactory factory = null;
public static ClassFactory getInstance(Authorization authorization)
{
if (authorization == null)
{return null; }
if (factory == null) {
synchronized(initLock)
{if (factory == null)
{... //从配置文件中获得当前className
try
{//动态装载类
Class c = Class.forName(className);
factory = (ClassFactory)c.newInstance();}
catch (Exception e)
{return null; }
}}}
//返回权限检查器用来限制授权对课程的访问
return new ClassFactoryProxy(authorization, factory,factory.getPermissions(authorization));
}
//创键课程接口Class的具体对象实例
public abstract Class createClass(String name, String description)
throws UnauthorizedException, ClassAlreadyExistsException;
//创键章接口Chapter的具体对象实例
public abstract ChapterThread createChapterThread(SectionMessage rootMessage)
throws UnauthorizedException;
//创键节接口Section的具体对象实例
public abstract SectionMessage createSectionMessage();
}
3.2 权限检查器的设计与实现
从上面的代码中我们发现,在ClassFactory的getInstance方法中最后的返回值似乎有些奇怪。它返回了ForumFactoryProxy的一个实例,为什么要这样实现呢。就是为了访问权限的控制,实现一个权限检查器。
在中小学教师继续教育平台中,因为有角色与权限的控制,对于课程、章和节的访问操作必须经过权限机制验证后才能进行。
以ClassFactoryProxy中的createClass方法为例,其实ClassFactoryProxy也是ClassFactory的一种抽象课程生成实现,它的createCLass具体实现如下:
public Class createClass(String name, String description)
throws UnauthorizedException, ClassAlreadyExistsException
{if (permissions.get(ClassPermissions.SYSTEM_ADMIN))
{Class newClass = factory.createClass(name, description);
return new ClassProxy(newClass, authorization, permissions);
}
else
{ throw new UnauthorizedException();}}
在这个方法中进行了权限验证,判断是否属于系统管理员。如果是,将直接从DbClassFactory对象factory的方法createClass中获得一个新的课程对象,然后再返回课程的子类代理对象ClassProxy。因为在课程中也还有很多属性和操作方法,这些也需要进行权限验证。
3.3 批量分页查询器设计
用户查询大量数据,从数据库不应该直接返回ResultSet,应该是Collection。但是有一个问题,如果这个数据很大,需要分页显示。如果一下子将所有页面要显示的数据都查询出来放在Collection,必然会影响性能。而批量分页查询器则不必将集合全部都展现出来,只有遍历到某个元素时才会查询数据库获得这个元素的数据。设计如图5所示。

图6 资料装饰器的设计
4 结论
本文针对中小学教师继续教育平台的灵活,变化大的特点,主要分析介绍了在实际开发中从设计模式出发所采用的技术架构。通过设计模式的采用使得我们的中小学教师继续教育平台实现了平台最初的设计目标,同时大大提高了系统的可维护性和可复用性。
参考文献:
[1]徐言声,译.设计模式解析(第2版).北京:人民邮电出版社,2006.
收稿日期:2007-12-16
作者简介:曾庆斌(1963-),男,广东云浮人,高级工程师,主要研究方向:软件技术开发,多媒体技术;陈华政(1981-),男,湖南株洲人,助教,硕士研究生,主要研究方向:图像处理与模式识别,软件应用。