惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
IT之家
IT之家
B
Blog RSS Feed
罗磊的独立博客
GbyAI
GbyAI
博客园 - Franky
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News
博客园 - 聂微东
N
Netflix TechBlog - Medium
博客园 - 三生石上(FineUI控件)
人人都是产品经理
人人都是产品经理
U
Unit 42
博客园 - 叶小钗
Jina AI
Jina AI
MyScale Blog
MyScale Blog
雷峰网
雷峰网
B
Blog
Hugging Face - Blog
Hugging Face - Blog
Blog — PlanetScale
Blog — PlanetScale
Recent Announcements
Recent Announcements
腾讯CDC
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - heart-in-sky

查询效率分析 svn权限 为IIS服务器添加扩展 oracle 查询历史语句 VS自带混乱器 AjaxPro组件实现前后台数据无刷新交互 - heart-in-sky - 博客园 使用 StateServer 持久保存 Session 会话状态 ! VSS管理 oracle管理 C#操作服务器文件 服务器操作 iis发布网站,域名指向 oracle数据库同步 WCF双工 Oracle常用的数据库字段类型 vs快捷键 对象数组与DataTable互换 C#网络编程 系统库设计说明书(数据库字典)
关于软件开发和模块接口设计之一些思考
heart-in-sky · 2010-03-02 · via 博客园 - heart-in-sky

一个软件系统可以按某种方式划分为各种模块,这里以一般的信息发布系统来说,整体可以划分为两大块:
1、公共模块
      如DAO模块、权限检测、登录信息检测等等,为其他模块作服务的,一般情况下,公共模块之间是不会产生交互行为的,如果非要产生交互性能,那就有可能要合 并公共模块或者转移功能。

2、业务模块
      如用户登录、信息列表展现、信息编辑等等,一般一个业务模块又可以分为
      1)、表现层,或者叫UI层,获取数据、展现、接收输入、校验(有可能不做)
      2)、中间访问层,提供给其他模块调用的接口,同时实现对传入数据有效性校验
      3)、中间层,提供主要的业务逻辑,这个层有可能会和“中间访问层”合并。
      4)、业务数据存储层,主要是处理本业务模块对象

划分模块的原则,以“高内聚、低耦合”为原则,一个模块/子模块,以提供一项功能为根本,避免一个模块提供多个不相关的功能。

一般一个业务模块可能会和多个公共模块、其他业务模块打交道。业务模块与其他模块之间的调用(耦合),尽量设计为可配置的,也就是在不更改代码的情 况下,可以改变耦合双方。

业务模块与业务模块之间尽量避免跨层调用,也避免低阶模块之间产生关联,中间访问层就访问中间访问层。

业务模块和业务模块之间的调用又分为通知型的和反馈型。
1、通知型,就是调用另一个模块,但是不等待其返回结果,这种一般可采用观察者模式来实现
2、反馈型,调用另一个模块,但是需要等待返回结果来决定下一步如何走,采用配置文件的方式来实现

业务模块的中间层如果比较复杂,可以划分成一个装配模块和多个子功能模块来实现,并且采用配置文件来进行装配,故子功能模块之间的接口要设计好。

关于模块功能变化,一般可分为整体功能替换和部分功能块替换。
1、整体功能替换比较好对付,只要接口不变,则可以整体替换,如果接口变了,则需要采用适配器模式来应对
2、部分功能块替换,这个就不太好办,除非预先能预测到哪些可能会变化,采用拦截器的模式来进行替换或更改

被调用模块对于传入的参数应做全面的检查,主要是有效性检查。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dxymm/archive/2008/05/23/2472482.aspx