业务图形系统框架设计--一个为了减少图形引擎替换工作量的设计
2011-07-13 14:14
411 查看
1 业务图形系统框架
1.1 业务图形系统架构说明
1.1.1 业务图形系统目的
本业务图形系统目的在于使得今后图形引擎替换的时候,减少替换的工作量,并且将部分的图形业务逻辑固定下来,可以作为以后一个开发的基础资源使用。
1.1.2 业务图形系统的基本设计思路
业务图形系统的基本设计思路是设计与图形引擎无关的图元类和图层类,业务图形系统只跟这些与图形引擎无关的图元类和图层类做交互;具体的图形引擎的图元类和图层类通过继承的方式实现,并使用简单工厂模式来创建这些图元和图层实例,使得业务类、业务集合应用程序不直接与引擎相关的元素有关联。这样以后替换新的图形引擎只要继承一下图元类和图层类,并通过工厂类创建新的图形引擎的图元和图层实例,即可以实现新的图形引擎的替换工作,基本不用去修改与图形相关的代码。
1.2 业务图形系统主要的程序集
业务图形系统用的主要的程序集:
业务图形系统主要的程序集dll的关系图如下
业务图形系统主要的程序集dll的关系图的分析文件:
1.3 业务图形系统主要的类
业务图形系统主要的类、类和类之间的关系图如下
业务图形系统主要的类、类和类之间的关系的分析文件:
Use this section to provide a strategic statement of the contents of the Functional Specification. This section should identify which foundational documents (requirements, usage scenarios and designs) comprise the Functional Specification and provide a brief statement about the content of each.
Justification: This information provides the reader a guideline of the structure of this document and the strategic context for reading its detail.
2 业务图形系统主要的基础类的详细说明
2.1 SHB.Framework.IUniqueIdLibrary程序集
2.1.1 GisData坐标数据类
主要用于储存业务图形的坐标数据。
2.1.2 IUniqueId唯一性标记类
主要用于标识图元的唯一性字段,判断图元是不是重复,用UniqueId查找图元元素和业务数据。
2.2 SHB.Framework.GisBaseControl程序集
2.2.1 GisCamera摄像机类
主要用于和具体的图形引擎做交互,并存储当前的放缩比率和摄像机的偏移位置。同时,继承了接口INotifyPropertyChanged,为的是该类的实例属性改变的时候,可以通知到具体的图形引擎。
2.2.2 LayerManage图层管理类
主用用于管理图层类实例的增删和查找,并提供了两个虚拟的方法,用于对具体的引擎增删图层时候额外操作。
/// <summary>
/// 增加图元时,对于图元的额外操作(基于具体GIS控件的)
/// </summary>
/// <param name="layer"></param>
protected virtual void AddedLayer(Layer layer)
{
}
/// <summary>
/// 删除图元时,对于图元的额外操作(基于具体GIS控件的)
/// </summary>
protected virtual void RemovedLayer(Layer layer)
{
}
2.2.3 IGisControl引擎图元管理接口
图形引擎控件继承本接口,界面程序只于本接口做图形方面的交互,图形引擎控件封装掉大部分的功能,比如缩放、移动、选择对象等。
BaseShapes:当前选中的对象
Giscamera:摄像机
LayerManage:图层管理类
ObtainShapeWay:获取选中图形的方式
其它的是一些鼠标事件。
2.2.4 IBaseShape图元接口
主要用于保存基础图元的一个引用。
2.2.5 BaseShape图元基本类
主要用于保存图元的一些基本的属性。
2.2.6 Layer图层-图元管理类
主要用于对图元的增删、和查找管理。并提供抽象的方法,用于对具体的引擎增删图元时候的额外操作。
/// <summary>
/// IsVisible属性改变时的事件
/// </summary>
protected abstract void IsVisiblePropertyChange();
/// <summary>
/// IsActive属性改变时的事件
/// </summary>
protected abstract void IsActivePropertyChange();
/// <summary>
/// 增加图元时,对于图元的额外操作(基于具体GIS控件的)
/// </summary>
/// <param name="shape"></param>
protected abstract void AddedShape(BaseShape shape);
/// <summary>
/// 删除图元时,对于图元的额外操作(基于具体GIS控件的)
/// </summary>
protected abstract void RemovedShape(BaseShape shape);
2.3 SHB.Framework.BaseBusinessEntityLibrary程序集
2.3.1 GisEntityBaseList业务集合基础类
主要用于管理业务实体类,提高抽象方法与图形工厂做图形创建、绘制交互。
3 业务图形系统主要的业务类的详细说明(以箱区为例)
注:图形引擎的修改、替换不会对业务类产生影响。
3.1 SHB.Framework.OrcaleEntityLibrary程序集
3.1.1 YardAreaEntityDb数据库数据存储类
主要用于存储从数据库取出的持久化数据。
3.2 SHB.Framework.BusinessEntityLibrary程序集
3.2.1 GisYardAreaEntity箱区业务类
主要用于存储数据库的数据,并包含业务逻辑方法;同时,业务类实现IUniqueId接口。
3.2.2 GisYardAreaListEntity箱区业务集合类
主要用于管理业务类的增删操作,并将业务数据映射到图形元素。
注:1、T,TK泛型分别对应于业务类和图形引擎元素中的图元(抽象类)。
2、CreateBaseShape方法不跟具体的图形引擎类关联,调用工厂方法创建图元。
3、DrawShape方法只调用图元(抽象类)的绘制方法,不包含具体图形引擎的类。
4 业务图形系统主要的业务图形类的详细说明(以箱区为例)
注:图形引擎的修改、替换不会对业务类产生影响。
4.1 SHB.Framework.GisBusinessControl程序集
4.1.1 AreaShape箱区图元抽象类
主要用于抽象箱区图元的绘制逻辑。
注:1、继承于图形BaseShape基类。
2、泛型T必须是IUniqueId类型的,即为业务类类型。
3、DrawArea、DrawCloseArea为不同的绘制逻辑,根据不同的业务,调用不同的绘制逻辑。
4.2 SHB.Framework.CreateInterFaceLibrary程序集
4.2.1 ICreateLayer图层创建接口
主要用于创建具体的图层。
4.2.2 ICreateShape图元创建接口
主要用于创建具体的图元。
4.3 SHB.Framework.CreateLibrary程序集
4.3.1 LayerFactory图元创建接口
主要用于通过属性LayerFactorys返回一个ICreateLayer的接口实例。
4.3.2 ShapeFactory图元创建接口
主要用于通过属性ShapeFactorys返回一个ICreateShape的接口实例。
4.3.3 CreateWpfAreaLayer图层创建接口实现类
主要用于实现接口ICreateLayer,创建具体的与图形引擎相关的类
4.3.4 CreateWpfAreaLayer图层创建接口实现类
主要用于实现接口ICreateShape,创建具体的与图形引擎相关的类
5 业务图形系统主要的与具体图形引擎相关的图形类的详细说明(以箱区为例)
5.1 SHB.Framework.GisWpfControl程序集
5.1.1 WpfDrawingVisual具体图形引擎绘制类
主要用于绘制图元,是图形引擎图元类的基类或是是绘制图形的基类。
注:继承接口IBaseShape,绘制的时候要存储BaseShape基类,便于选择等处理。
5.1.2 WpfLayerManage具体图形引擎图层管理类
主要用于对具体图形引擎图层增删的具体图层处理。
注:继承与图层管理类的基类LayerManage。
主要重载2个方法:AddedLayer、RemovedLayer
5.1.3 WpfLayer具体图形引擎图层
主要用于对具体图形引擎图元增删的具体图元处理。
注:继承与图元管理类的基类Layer。
主要重载2个方法:AddedShape、RemovedShape
5.1.4 WpfShape具体图形引擎图元类
主要用于添加一下基本属性和方法
5.1.5 WpfAreaShape具体图形引擎业务图元类
主要用于实现抽象图元业务绘制方法。是真正的绘制图元的类。
6 总结
上述的设计是为了使替换图形引擎时,减少一些工作量。现在按现在这个设计开发完程序,以后如果要替换引擎只要按新的图形引擎的要求实现一下几点:
1、 按具体图形引擎要求现实ICreateLayer、ICreateShape接口
2、 按具体图形引擎要求继承AreaShape、Layer抽象类,并做相应的图形方面的处理。
3、 按具体图形引擎要求继承LayerManage抽象类,并做相应的图形方面的处理。
4、 按具体图形引擎要求继承IGisControl接口,并图形控件实现基本的图形操作
1.1 业务图形系统架构说明
1.1.1 业务图形系统目的
本业务图形系统目的在于使得今后图形引擎替换的时候,减少替换的工作量,并且将部分的图形业务逻辑固定下来,可以作为以后一个开发的基础资源使用。
1.1.2 业务图形系统的基本设计思路
业务图形系统的基本设计思路是设计与图形引擎无关的图元类和图层类,业务图形系统只跟这些与图形引擎无关的图元类和图层类做交互;具体的图形引擎的图元类和图层类通过继承的方式实现,并使用简单工厂模式来创建这些图元和图层实例,使得业务类、业务集合应用程序不直接与引擎相关的元素有关联。这样以后替换新的图形引擎只要继承一下图元类和图层类,并通过工厂类创建新的图形引擎的图元和图层实例,即可以实现新的图形引擎的替换工作,基本不用去修改与图形相关的代码。
1.2 业务图形系统主要的程序集
业务图形系统用的主要的程序集:
业务图形系统主要的程序集dll的关系图如下
业务图形系统主要的程序集dll的关系图的分析文件:
1.3 业务图形系统主要的类
业务图形系统主要的类、类和类之间的关系图如下
业务图形系统主要的类、类和类之间的关系的分析文件:
Use this section to provide a strategic statement of the contents of the Functional Specification. This section should identify which foundational documents (requirements, usage scenarios and designs) comprise the Functional Specification and provide a brief statement about the content of each.
Justification: This information provides the reader a guideline of the structure of this document and the strategic context for reading its detail.
2 业务图形系统主要的基础类的详细说明
2.1 SHB.Framework.IUniqueIdLibrary程序集
2.1.1 GisData坐标数据类
主要用于储存业务图形的坐标数据。
2.1.2 IUniqueId唯一性标记类
主要用于标识图元的唯一性字段,判断图元是不是重复,用UniqueId查找图元元素和业务数据。
2.2 SHB.Framework.GisBaseControl程序集
2.2.1 GisCamera摄像机类
主要用于和具体的图形引擎做交互,并存储当前的放缩比率和摄像机的偏移位置。同时,继承了接口INotifyPropertyChanged,为的是该类的实例属性改变的时候,可以通知到具体的图形引擎。
2.2.2 LayerManage图层管理类
主用用于管理图层类实例的增删和查找,并提供了两个虚拟的方法,用于对具体的引擎增删图层时候额外操作。
/// <summary>
/// 增加图元时,对于图元的额外操作(基于具体GIS控件的)
/// </summary>
/// <param name="layer"></param>
protected virtual void AddedLayer(Layer layer)
{
}
/// <summary>
/// 删除图元时,对于图元的额外操作(基于具体GIS控件的)
/// </summary>
protected virtual void RemovedLayer(Layer layer)
{
}
2.2.3 IGisControl引擎图元管理接口
图形引擎控件继承本接口,界面程序只于本接口做图形方面的交互,图形引擎控件封装掉大部分的功能,比如缩放、移动、选择对象等。
BaseShapes:当前选中的对象
Giscamera:摄像机
LayerManage:图层管理类
ObtainShapeWay:获取选中图形的方式
其它的是一些鼠标事件。
2.2.4 IBaseShape图元接口
主要用于保存基础图元的一个引用。
2.2.5 BaseShape图元基本类
主要用于保存图元的一些基本的属性。
2.2.6 Layer图层-图元管理类
主要用于对图元的增删、和查找管理。并提供抽象的方法,用于对具体的引擎增删图元时候的额外操作。
/// <summary>
/// IsVisible属性改变时的事件
/// </summary>
protected abstract void IsVisiblePropertyChange();
/// <summary>
/// IsActive属性改变时的事件
/// </summary>
protected abstract void IsActivePropertyChange();
/// <summary>
/// 增加图元时,对于图元的额外操作(基于具体GIS控件的)
/// </summary>
/// <param name="shape"></param>
protected abstract void AddedShape(BaseShape shape);
/// <summary>
/// 删除图元时,对于图元的额外操作(基于具体GIS控件的)
/// </summary>
protected abstract void RemovedShape(BaseShape shape);
2.3 SHB.Framework.BaseBusinessEntityLibrary程序集
2.3.1 GisEntityBaseList业务集合基础类
主要用于管理业务实体类,提高抽象方法与图形工厂做图形创建、绘制交互。
3 业务图形系统主要的业务类的详细说明(以箱区为例)
注:图形引擎的修改、替换不会对业务类产生影响。
3.1 SHB.Framework.OrcaleEntityLibrary程序集
3.1.1 YardAreaEntityDb数据库数据存储类
主要用于存储从数据库取出的持久化数据。
3.2 SHB.Framework.BusinessEntityLibrary程序集
3.2.1 GisYardAreaEntity箱区业务类
主要用于存储数据库的数据,并包含业务逻辑方法;同时,业务类实现IUniqueId接口。
3.2.2 GisYardAreaListEntity箱区业务集合类
主要用于管理业务类的增删操作,并将业务数据映射到图形元素。
注:1、T,TK泛型分别对应于业务类和图形引擎元素中的图元(抽象类)。
2、CreateBaseShape方法不跟具体的图形引擎类关联,调用工厂方法创建图元。
3、DrawShape方法只调用图元(抽象类)的绘制方法,不包含具体图形引擎的类。
4 业务图形系统主要的业务图形类的详细说明(以箱区为例)
注:图形引擎的修改、替换不会对业务类产生影响。
4.1 SHB.Framework.GisBusinessControl程序集
4.1.1 AreaShape箱区图元抽象类
主要用于抽象箱区图元的绘制逻辑。
注:1、继承于图形BaseShape基类。
2、泛型T必须是IUniqueId类型的,即为业务类类型。
3、DrawArea、DrawCloseArea为不同的绘制逻辑,根据不同的业务,调用不同的绘制逻辑。
4.2 SHB.Framework.CreateInterFaceLibrary程序集
4.2.1 ICreateLayer图层创建接口
主要用于创建具体的图层。
4.2.2 ICreateShape图元创建接口
主要用于创建具体的图元。
4.3 SHB.Framework.CreateLibrary程序集
4.3.1 LayerFactory图元创建接口
主要用于通过属性LayerFactorys返回一个ICreateLayer的接口实例。
4.3.2 ShapeFactory图元创建接口
主要用于通过属性ShapeFactorys返回一个ICreateShape的接口实例。
4.3.3 CreateWpfAreaLayer图层创建接口实现类
主要用于实现接口ICreateLayer,创建具体的与图形引擎相关的类
4.3.4 CreateWpfAreaLayer图层创建接口实现类
主要用于实现接口ICreateShape,创建具体的与图形引擎相关的类
5 业务图形系统主要的与具体图形引擎相关的图形类的详细说明(以箱区为例)
5.1 SHB.Framework.GisWpfControl程序集
5.1.1 WpfDrawingVisual具体图形引擎绘制类
主要用于绘制图元,是图形引擎图元类的基类或是是绘制图形的基类。
注:继承接口IBaseShape,绘制的时候要存储BaseShape基类,便于选择等处理。
5.1.2 WpfLayerManage具体图形引擎图层管理类
主要用于对具体图形引擎图层增删的具体图层处理。
注:继承与图层管理类的基类LayerManage。
主要重载2个方法:AddedLayer、RemovedLayer
5.1.3 WpfLayer具体图形引擎图层
主要用于对具体图形引擎图元增删的具体图元处理。
注:继承与图元管理类的基类Layer。
主要重载2个方法:AddedShape、RemovedShape
5.1.4 WpfShape具体图形引擎图元类
主要用于添加一下基本属性和方法
5.1.5 WpfAreaShape具体图形引擎业务图元类
主要用于实现抽象图元业务绘制方法。是真正的绘制图元的类。
6 总结
上述的设计是为了使替换图形引擎时,减少一些工作量。现在按现在这个设计开发完程序,以后如果要替换引擎只要按新的图形引擎的要求实现一下几点:
1、 按具体图形引擎要求现实ICreateLayer、ICreateShape接口
2、 按具体图形引擎要求继承AreaShape、Layer抽象类,并做相应的图形方面的处理。
3、 按具体图形引擎要求继承LayerManage抽象类,并做相应的图形方面的处理。
4、 按具体图形引擎要求继承IGisControl接口,并图形控件实现基本的图形操作
相关文章推荐
- 【转】数据库设计经验谈(一个成功的管理系统,是由:[50% 的业务 + 50% 的软件] 所组成,而 50% 的成功软件又有 [25% 的数据库 + 25% 的程序] 所组成,数据库设计的好坏是一个关键)
- 计划开发一个能够减少工作量的框架
- 基于ACE设计一个c++网络游戏服务器框架引擎
- 精心设计的基于组件的C# Win Forms实践 一个框架数据库驱动多个业务逻辑数据库
- 一个简单图形界面框架XYGui的设计与实现 (三)
- [自制操作系统] BMP格式文件读取&图形界面系统框架-应用接口设计
- 开发一个业务逻辑复杂的系统,应该怎么样设计才能使项目的扩展性更好
- Android Butterknife 8.4.0 ButterKnife是一个专注于Android系统的View注入框架,可以减少大量的findViewById以及setOnClickListene
- 一个使用Java jdk8中Nashorn(Java javascript引擎)设计的Web开发框架
- 一个基于封装CSLA框架后,设计业务类的例子:users .
- 一个基于封装CSLA框架后,设计业务类的例子:User .
- 精心设计的基于组件的C# Win Forms实践 一个框架数据库驱动多个业务逻辑数据库
- 系统原型结构描述(概述)最近要设计一个框架,大家一起讨论下如何实现?
- 一个业务系统设计构想(一)
- 一个简单图形界面框架XYGui的设计与实现 (一)
- 一个简单图形界面框架XYGui的设计与实现 (四)
- 引擎设计跟踪(九.12) 图形系统设计
- Android是一个针对触摸屏专门设计的操作系统,当点击编辑框,系统自动为用户弹出软键盘,以便用户进行输入。 那么,弹出软键盘后必然会造成原有布局高度的减少,那么系统应该如何来处理布局的减少
- 《自己动手写框架3》:业务流程引擎设计
- 关于用三大框架写一个系统Dao层的设计