【求助】小系统组成大系统所遇到的问题

简介:

    以下只是举例!

 

环境:

    1,通用实体库CommonEntity,里面有管理员类

class Administrator<TEntity> : Entity<TEntity>, IAdministrator where TEntity:Administrator<TEntity>{

static TEntity Login(String username, String password);

static IAdministator FindByID(Int32 id);

static IAdministator FindByName(String name);

}

        这是一个泛型类,然后有个默认的管理员类

class Administrator:Administrator<Administrator>{}

        可别晕了,尖括号里面的Administrator就是左边的那个类,而尖括号前那个,是上面那个泛型类。上面可以看到,我们还有一个IAdministator接口。

 

    2,请假模块。业务逻辑部分针对IAdministrator编程,因为不知道最终类型,没办法利用Administrator<TEntity>进行编码。

    3,出差模块。同上,只对IAdministator进行编码。

 

    4,最终项目。它要扩展管理员类,于是有

class Admin:Administrator<Admin>{

public String Address{get;set;}

}

        这个扩展的管理员类,多了一个地址Address字段。

        这个时候,需要把请假模块和出差模块集成进来,而这两个模块,根本不需要关心扩展的Address字段,因为它们只需要用到基类里面的那些字段和方法就足够了,但是那两个模块里面用的是IAdministator接口所代表的对象,必须是最终扩展的这个Admin类,而不是通用实体库CommonEntity里面的Administrator,否则会出很大的问题,例如它们俩是不同的数据表。

 

现状:

    1,目前采用的方法。请假和出差模块使用Administrator类(不是泛型那个),如IAdministator admin=Administrator.FindByID(123)。这个FindByID里面,读取配置文件,得知真正的管理员类是Admin,然后反射调用它的方法,所以最终得到的admin实际上是Admin的实例,而不是Administator的。

    2,上面的方法解决了问题,但是还有很多问题。管理员类只是一个例子,还有很多其它的类需要这样做,都这样子使用配置,最后统一起来,就会奇臭无比。

    3,假如还有一个模块,考勤模块,需要用到请假和出差,然后它又要扩展请假和出差……(你懂的!)

 

求助:

    求一个漂亮的解决方案!

我不相信神话,我只相信汗水!我不相信命运,我只相信双手!
分类: C#

本文转自大石头博客园博客,原文链接:http://www.cnblogs.com/nnhy/archive/2011/07/26/2117054.html,如需转载请自行联系原作者
目录
相关文章
|
20天前
7.6Armstrong公理系统
7.6Armstrong公理系统
|
10月前
学生系统的各种限制
学生系统的各种限制
34 0
|
11月前
防沉迷系统
防沉迷系统
116 0
|
Linux 芯片 C++
女朋友问我,系统咋装呀?
女朋友问我,系统咋装呀?
160 0
女朋友问我,系统咋装呀?
|
数据库 关系型数据库 MySQL
简单系统中的几个点
最近应一个老师的要求帮忙做几个网页用来查询和汇总,因为比较简单也没用框架什么的,就做了几个简单的界面以及用php接收和从数据库中显示,一点安全都没做,emmm,求轻喷,记录下几个点。
991 0
系统思考的使用
3.4 系统思考的使用 如何使用系统思考来分析一个系统呢? 首先,确定要分析的对象。 第二,确定输入和输出。 第三,查找影响对象的主要因素。如果多个因素可以合成一个因素,可以通过比较器来表示。
931 0
系统思考的介绍
3.3 系统思考的介绍 在控制理论中,分为开环控制系统和闭环控制系统。开环控制系统是不将控制的结果反馈回来影响当前控制的系统。闭环控制系统是将控制的结果反馈回来影响当前控制的系统。
977 0
|
监控 大数据 安全
系统思考
最近发现一本关于提高系统思维能力的书,是一本你读起来很容易接受,逻辑很清楚的书,下面我就总结下,给大家参考下 背景 一般在我们工作或者生活的过程中都会碰到下面三中情况 遇到事情突然想不清楚 表达时说不清楚 学习的时候学的慢 以上的场景可能不是所有人都遇到过,但这个不是最关键的。
1888 0