业务图形系统框架设计--一个为了减少图形引擎替换工作量的设计

1             业务图形系统框架

1.1              业务图形系统架构说明

1.1.1                业务图形系统目的

本业务图形系统目的在于使得今后图形引擎替换的时候,减少替换的工作量,并且将部分的图形业务逻辑固定下来,可以作为以后一个开发的基础资源使用。

1.1.2                业务图形系统的基本设计思路

业务图形系统的基本设计思路是设计与图形引擎无关的图元类和图层类,业务图形系统只跟这些与图形引擎无关的图元类和图层类做交互;具体的图形引擎的图元类和图层类通过继承的方式实现,并使用简单工厂模式来创建这些图元和图层实例,使得业务类、业务集合应用程序不直接与引擎相关的元素有关联。这样以后替换新的图形引擎只要继承一下图元类和图层类,并通过工厂类创建新的图形引擎的图元和图层实例,即可以实现新的图形引擎的替换工作,基本不用去修改与图形相关的代码。

1.2              业务图形系统主要的程序集

业务图形系统用的主要的程序集:

业务图形系统主要的程序集dll的关系图如下

 

 

业务图形系统主要的程序集dll的关系图的分析文件:

1.3              业务图形系统主要的类

业务图形系统主要的类、类和类之间的关系图如下

业务图形系统主要的类、类和类之间的关系的分析文件:

 

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箱区业务集合类

主要用于管理业务类的增删操作,并将业务数据映射到图形元素。

注:1TTK泛型分别对应于业务类和图形引擎元素中的图元(抽象类)。

         2CreateBaseShape方法不跟具体的图形引擎类关联,调用工厂方法创建图元。

3DrawShape方法只调用图元(抽象类)的绘制方法,不包含具体图形引擎的类。

4         业务图形系统主要的业务图形类的详细说明(以箱区为例)

注:图形引擎的修改、替换不会对业务类产生影响。

4.1              SHB.Framework.GisBusinessControl程序集

4.1.1                AreaShape箱区图元抽象类

主要用于抽象箱区图元的绘制逻辑。

注:1、继承于图形BaseShape基类。

         2、泛型T必须是IUniqueId类型的,即为业务类类型。

         3DrawAreaDrawCloseArea为不同的绘制逻辑,根据不同的业务,调用不同的绘制逻辑。

 

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个方法:AddedLayerRemovedLayer

 

 

 

5.1.3                WpfLayer具体图形引擎图层

主要用于对具体图形引擎图元增删的具体图元处理。

注:继承与图元管理类的基类Layer

主要重载2个方法:AddedShapeRemovedShape

 

5.1.4                WpfShape具体图形引擎图元类

主要用于添加一下基本属性和方法

 

5.1.5                WpfAreaShape具体图形引擎业务图元类

主要用于实现抽象图元业务绘制方法。是真正的绘制图元的类。

6         总结

上述的设计是为了使替换图形引擎时,减少一些工作量。现在按现在这个设计开发完程序,以后如果要替换引擎只要按新的图形引擎的要求实现一下几点:

1、  按具体图形引擎要求现实ICreateLayerICreateShape接口

2、  按具体图形引擎要求继承AreaShapeLayer抽象类,并做相应的图形方面的处理。

3、  按具体图形引擎要求继承LayerManage抽象类,并做相应的图形方面的处理。

4、  按具体图形引擎要求继承IGisControl接口,并图形控件实现基本的图形操作

posted @ 2011-07-13 14:14  dyheee  阅读(725)  评论(0编辑  收藏  举报