模块的划分,一直是争议比较大的地方,各种方案相去甚远,
模块定义,范围,大小,分包,装配各不相同。
根据不同的产品,项目,可能都会有不同的设计。
如果一个公司自用的快速开发平台,它的模块应该如何设计?
简单确立一下设计目标:
1. 低耦合高内聚
2. 模块复用度高
3. 模块可扩展性强
4. 模块自描述,自包含
5. 模块自发现,自装配
6. 模块以业务为中心
7. 模块易于开发测试
8. 模块易于集成部署
.....
初步设想需要解决:
1. 模块的粒度多大
2. 是否区分功能模块与服务模块
3. 模块如何检测和加载
4. 如何描述模块间的依赖关系,并保证依赖关系稳定
5. 模块如何区隔上下文或名称空间
6. 模块如何统一处理全局风格整体置换
7. 模块间如何以对等的方式互相"侵入"
8. 模块如何统一暴露服务API
9. 模块如何识别SPI策略实现
10.模块扩展点如何设计
11.模块如何注册与发布事件
12.模块如何处理截面,拦截器
13.模块元数据如何定义,方便开发,也方便检测
14.模块如何控制版本
15.模块如何简化部署和分发
......
在刚做完的项目中,系统按主用户群使用范围,划分为运单管理,结算管理,巴枪管理,基础数据管理等子系统,
再按业务功能划分为几十个功能模块,按理论,每个功能模块都能部署到任意子系统中,
并且每个模块就是一个jar包,直接扔到lib目录下,即可使用,
框架自动发现模块,自动装配,自动释放访问资源,自动加载配置,
因为是以项目为中心搭建的框架,所以大量采用了命名约定方式,来处理装配过程,尽量减少配置,
但在开发过程中,因为开发人员较多,培训不够,各开发小组协调差,时间仓促等原因,
出现了命名冲突,循环依赖,开发环境搭建难,集成测试不过,等诸多问题,
最后框架为了应付各种情况,做了很多通容的处理,整体都有些变形,
这是设计之初写的blog文章:
http://javatar.iteye.com/blog/182149
当时和leadyu讨论,也觉得有些风险,但还是用上了。
现在想想,虽然不太完美,但在近半年的优化调整后,以及开发人员的磨合,也算比较通畅,
对下一步开发还是很有帮助的,也希望在此基础上作进一步思考。
分享到:
相关推荐
每个实例都采用系统分析和模块划分的方法,讲解了各个系统是如何设计和实现的。 由于本书不是以理论介绍为重点,而更多侧重于实践应用,因此本书适合对JSP有一定了解或有一定Java编程基础的读者。本书可以作为高等...
模块化设计:使用方法可以帮助将游戏的不同功能模块分解为更小、更易于管理和测试的部分。每个方法可以负责特定的任务,例如移动玩家、检查胜利条件、处理特殊事件等。 可重用性:通过将游戏逻辑封装在方法中,可以...
01 ip地址与子网划分 02 ip地址配置 03 虚拟机网络模式 04 三层隔离验证试验 第8章 01 上节课复习 02 软件包介绍 03 rpm软件包管理 04 yum软件包管理 05 源码安装python3.5 06 ssh服务 07 apache服务 08 samba服务...
全书根据WinHex 菜单来划分章节,详细描述了WinHex 的全部功能和使用方法,对于那些晦涩难懂 的知识点,利用编写实验代码的方式直观地展示其原理。本书还揭示了WinHex 脚本编程及WinHex API 函数的秘密,这在相关...
9-1 Zookeeper安装与HBase配置优化 9-2 Hos开发逻辑梳理 9-3 Hos模块划分及mybatis配置 第10章 子模块-用户管理模块 Hos服务用户管理模块开发,基于第九章的数据库操作模块,开发相关的实体类对用户的增删改查操作...
│ 11.Maven项目模块划分-引用依赖包( f- {5 L4 F2 i8 z+ c* U │ 12.项目环境搭建细节-监听器 │ 13.项目环境搭建细节-过滤器 │ 14.项目环境搭建细节-核心控制器 │ 15.项目环境搭建细节-spring-springmvc相关配置...
设计软件结构,就是划分程序的功能模块,确定相互之间的调用关系。 如同写文章要先列文章的提纲一样,设计软件要先设计软件的结构。 计算机辅助机械设计V带轮设计全文共147页,当前为第8页。 普通V带传动程序可设置...
通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 大量使用流程图表示程序的执行过程,使用结构图表示程序的内部状态 每章最后都给出了典型的练习题,...
通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 大量使用流程图表示程序的执行过程,使用结构图表示程序的内部状态 每章最后都给出了典型的练习题,...
8.3设 计 思 路 用户登录模块设计可划分为前台登录界面设计和后台数据验证设计两部分。 《Java-Web应用开发基础》教学课件08课程设计实例全文共73页,当前为第7页。 8.3设 计 思 路 8.3.1登录界面设计 登录界面要...
内核功能划分 设备和模块的分类 安全问题 版本编号 许可证条款 加入内核开发社团 本书概要 第二章 构造和运行模块 设置测试系统 Hello World模块 核心模块与应用程序的对比 编译和装载 内核符号表 预备...
分析系统可划分的子功能模块,每个功能模块内部的运行步骤等等。上面的2个不同类型的进行划分的建模图,本章将对上述6个建模图进行分别举例讲解。1、上章回顾。2、摘要。3、本章内容。4、结构图。5、行为图。6、本章...
内核功能划分 12 设备和模块的分类 14 安全问题 15 版本编号 17 许可证条款 18 加入内核开发社团 19 本书概要 19 第二章 构造和运行模块 21 设置测试系统 21 Hello World模块 22 核心模块与应用程序的对比...
正确理解实际运行中玩家的感受,解决游戏中模块的科学划分与结构组织,更好更快的开发设计游戏。 五、课题设计的实现方案 (1)本游戏开发语言的选 飞翔的小鸟游戏以纯java语言来开发编写。Java是由Sun ...
模块六 计算机网络基础应用 计算机网络基础应用全文共31页,当前为第1页。 李军进入公司后,公司分配给他一台电脑,要求安装公司所用的财务管理软件T6,同时将这台计算机接入部门网络。 李军在安装好软件后,准备将...
课题的功能模块的划分: 开始 菜单界面 功能选择 初始化函数 输入学生信息 删除学生信息 显示学生信息 查找学生信息 按成绩排序 保存到文件 从文件读数据 插入学生成绩 分类合计 退出系统 结束 详细...
3.4.2. 设计回顾 3.4.3. 配置选项 3.4.4. Resolvers 3.4.4.1. 文件 Resolver 3.4.5. 基本用法 4. Zend_Cache 4.1. 简介 4.2. 缓存原理 4.2.1. Zend_Cache 工厂方法 4.2.2. 标记纪录 4.2.3. 缓存清理 4.3. ...
划分内核 ..................................................................................................................... 17 2.3 1.3. 设备和模块的分类 ..............................................