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

推荐订阅源

Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy International News Feed
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Troy Hunt's Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
V2EX - 技术
V2EX - 技术
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
O
OpenAI News
Cloudbric
Cloudbric
Google Online Security Blog
Google Online Security Blog
Schneier on Security
Schneier on Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Help Net Security
Help Net Security
Cyberwarzone
Cyberwarzone
G
GRAHAM CLULEY
L
Lohrmann on Cybersecurity
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Spread Privacy
Spread Privacy
NISL@THU
NISL@THU
N
News and Events Feed by Topic
T
Tenable Blog
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
The Hacker News
The Hacker News
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
P
Proofpoint News Feed
Webroot Blog
Webroot Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 三生石上(FineUI控件)
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Jina AI
Jina AI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
L
LangChain Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东

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