以下只是举例!

环境:

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,假如还有一个模块,考勤模块,需要用到请假和出差,然后它又要扩展请假和出差……(你懂的!)

求助:

求一个漂亮的解决方案!

转载于:https://www.cnblogs.com/nnhy/archive/2011/07/26/2117054.html

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

  1. 小系统到大系统的转变

    架构演变第一步:物理分离 webserver 和数据库    最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程, 因此就假设 ...

  2. boot分布式计算 spring_腾讯T4大佬剖析SpringBoot2 :从搭建小系统到架构分布式大系统...

    写在前面SpringBoot是目前Spring技术体系中炙手可热的框架之一,既可用于构建业务复杂的企业应用系统,也可以开发高性能和高吞吐量的互联网应用.Spring Boot框架降低了Spring 技 ...

  3. 云商城云小店官网源码-修复30套模板支持一键对接各大系统

    简介: 云小店商城源码修复30套模板支持一键对接各大系统,需PHP7.2以下 上传源码后提示数据库连接错误的,先安装一下 访问:http://你的域名/install进行安装 默认后台地址: 域名/a ...

  4. 小团队构建大网站_如何用小团队构建设计系统

    小团队构建大网站 by Naema Baskanderi 通过内玛·巴斯坎迪(Naema Baskanderi) 如何用小团队构建设计系统 (How to Build a Design System ...

  5. 小识堂 | 嵌入式系统的11大特点,你知多少?

    今天小编跟大家来讨论一下:嵌入式系统的11大特点,你知多少呢? 不一样的干货,喜欢的记得转载或留言哦*-* 嵌入式系统的11大特点,你知多少? 前言 嵌入式系统是嵌入到对象体系中的专用计算机系统,其用 ...

  6. 积分商城小程序一般用多大服务器,微信小程序积分商城系统运营需要注意哪些细节...

    积分商城系统是广大商家营销首选工具,积分营销对于实体店来说,不仅仅是打通线上线下流量,还能帮助商家通过积分营销活动低成本拉新获客.促活留存.微信小程序积分商城系统在运营过程中需要注意哪些细节呢? 一. ...

  7. 安卓耗电监控app_Android系统十大耗电应用拍照APP排第一

    Android系统十大耗电应用拍照APP排第一 Android系统在我国有着众多的使用者,下面是小编整理的关于Android系统耗电应用的分析,希望对大家有所启发,更多消息请关注应届毕业生网. 在智能 ...

  8. 手把手教你做用户画像:3种标签类型、8大系统模块

    导读:在互联网步入大数据时代后,用户行为给企业的产品和服务带来了一系列的改变和重塑,其中最大的变化在于,用户的一切行为在企业面前是可"追溯""分析"的.企业内保 ...

  9. 不想用鸿蒙系统怎么办,华为鸿蒙系统出大BUG!网友:这再也不是用户想要的鸿蒙系统...

    前段时间华为以及荣耀都推出了自家的两款智能电视,华为智慧屏以及荣耀智慧屏两款电视,从发布至今就吸引了许多华为用户的喜爱,至今在各大电商平台也会偶尔出现断货的情况. 大家都知道,无论是华为智慧屏还是荣耀 ...

最新文章

  1. 主席树 + 树上倍增 ---- codeforces 587C[树上倍增或者主席树]
  2. java耗时任务有哪些,java后台耗时任务多线程返回结果
  3. Flink State 误用之痛,你中招了吗?
  4. 设计模式——设计模式之禅day1
  5. Spring Boot定时任务-Quartz介绍
  6. 初中数学503个必考知识点_2020年中考数学必考知识点公布,考生高分、满分提分必备神器...
  7. [Python]网络爬虫(11):亮剑!爬虫框架小抓抓Scrapy闪亮登场!
  8. Asp.Net Core发布绑定域名和端口
  9. php 5.6 闭包,PHP 闭包那点事儿
  10. 读书笔记_中国期货市场量化交易(李尉)05
  11. C++常见面试题-30道
  12. 通过SharpShell快速实现Windows Shell扩展
  13. python数据分析与挖掘实战pdf_《Python数据分析与挖掘实战》PDF+完整源码
  14. java 最佳主键_最佳Java 8书籍
  15. c语言编程sinx泰勒公式_大白话5分钟带你走进人工智能-第12节梯度下降之原理泰勒公式(7)...
  16. 创建页面html,DW软件新建一个html网页
  17. MAC安装淘宝镜像NPM
  18. 天大2021年秋学期考试《画法几何及工程制图》离线作业考核试题
  19. 微信公众号文章素材收集网站大盘点
  20. 廊坊金彩教育:关键词有什么技巧

热门文章

  1. Java学习笔记_匿名/ArrayList
  2. redis缓存穿透、缓存雪崩、缓存击穿、并发竞争
  3. 以太网供电技术/有源以太网技术POE简单介绍
  4. 【IT笔试面试题整理】给定二叉树,给每层生成一个链表
  5. Coding: 编写合格的REST API
  6. Linux命令关机/重启和Windows系统dos命令关机/重启
  7. 【python 5】正则表达式
  8. 我如何在20小时内为AWS ML专业课程做好准备并进行破解
  9. 全志A33-ARM linux开机进入uboot命令行
  10. 200万存银行理财,年利率5%,未来30年够养老了吗?