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

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
Jina AI
Jina AI
宝玉的分享
宝玉的分享
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
J
Java Code Geeks
博客园 - 【当耐特】
小众软件
小众软件
博客园 - Franky
S
SegmentFault 最新的问题
WordPress大学
WordPress大学
雷峰网
雷峰网
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
Last Week in AI
Last Week in AI
博客园_首页
月光博客
月光博客
IT之家
IT之家
阮一峰的网络日志
阮一峰的网络日志
Webroot Blog
Webroot Blog
Stack Overflow Blog
Stack Overflow Blog
腾讯CDC
云风的 BLOG
云风的 BLOG
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
Recent Commits to openclaw:main
Recent Commits to openclaw:main
D
Docker
The Last Watchdog
The Last Watchdog
有赞技术团队
有赞技术团队
Hacker News - Newest:
Hacker News - Newest: "LLM"
D
DataBreaches.Net
S
Security @ Cisco Blogs
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
TaoSecurity Blog
TaoSecurity Blog
S
Security Affairs
Y
Y Combinator Blog
O
OpenAI News
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Forbes - Security
Forbes - Security
P
Palo Alto Networks Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
K
Kaspersky official blog
Cloudbric
Cloudbric

博客园 - 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