模块接口是模块之间进行对接交互的门户,我们在设计时至少应该遵循以下四个原则:
    一,简单原则。所谓简单,主要体现在模块接口的使用方法 上,模块的使用者在不借助或借助很少的文档的情况下,就可以轻松使用模块所提供的功能。这首先要求接口方法的命名要规范,每个对外提供的方法名都应该有意 义,让使用者可以通过名称猜测到方法的主要用途;其次要求接口中的相关参数的数据类型要尽可能的简单,尽量少使用嵌套层次多的数据结构,必要时可以构建全局应用的内存环境来保存模块间共同使用的数据,同时在这个内存环境之上提供不同数据的操作方法,从而减少模块间直接性的复杂数据的传递;其三,模块接口的方法尽可能单一,设计模式中的工厂模式是一种不错的选择。
   二,封闭原则。封闭原则要求的的是,模块功能的实现细节要完全对外封闭,而且在对模块内部的处理逻辑进行修改时,不会影响模块使用者的调用逻辑。
  三,完整性原则。做为功能模块,它所提供的功能应该是一个全面的整体,一些具有细微差别的功能应该被集中到一个模块中,这样我们可以方便利用继承、重载、覆写等技术手段来提高代码复用率,同时也可以提升模块使用的灵活度。
   四,可置换原则。我们很难保证一个功能模块所提供的功能会永不过时,因此在接口设计时应该尽可能的应用接口编程思想,为接口提供标准的接口规范,这样将来可以轻松的用遵循接口规范的新的模块置换原有的模块,而不会影响其到他相关模块的调用方式。

转载于:https://www.cnblogs.com/phonegap/archive/2008/12/14/2535929.html

模块间接口设计的原则相关推荐

  1. 软件接口设计 六大原则

    转载自 http://www.cnblogs.com/zfc2201/p/3423370.html 一.单一职责原则 Single Responsibility Principle, 简称SRP. 定 ...

  2. 软件接口设计 六大原则

    转载自 http://www.cnblogs.com/zfc2201/p/3423370.html 一.单一职责原则 Single Responsibility Principle, 简称SRP. 定 ...

  3. 数据结构 -- 可重用模块的接口设计模板

    以下以链表为例子,仔细体会代码模块化设计的思想以及代码规范. /*************************************************** * Coperight (C) ...

  4. 【设计模式】软件设计七大原则 ( 接口隔离原则 | 代码示例 )

    文章目录 一.接口隔离原则简介 二.接口隔离原则代码示例 ( 反面示例 ) 1.接口定义 ( 接口臃肿 ) 2.实现类 1 3.实现类 2 三.接口隔离原则代码示例 ( 推荐用法 ) 1.接口 1 2 ...

  5. 耦合性:软件系统结构中各模块间相互联系紧密程度的一种度量

    简介 耦合性也叫块间联系.指软件系统结构中各模块间相互联系紧密程度的一种度量.模块之间联系越紧密,其耦合性就越强,模块的独立性则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息 ...

  6. 【校招VIP】[约起来] 接口设计1:图片上传接口

    今天来看商业实战项目约起来的第一个模块,活动发布模块的接口设计,这期课程包括两个接口,一个是图片上传,一个是活动发布后的提交. 首先了解图片上传接口,常规的图片上传需要前后端配合.前端通过接口传给后端 ...

  7. 图解模块间7种耦合关系

    一.高内聚与低耦合 高内聚与低耦合是每个软件开发者追求的目标,那么内聚和耦合分别是什么意思呢? 内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事.它描述的是模块内的功能联系. 耦合 ...

  8. 16. 设计模式之契约原则:如何做好 API 接口设计?

    一.契约式设计原则:API 设计的指导书 无论是架构设计还是编码实现,现在都越来越离不开接口设计,接口可以说是新时代的"集装箱",是得到了几乎所有人一致共识的通用标准. GoF 在 ...

  9. 腾讯技术分享:微服务接口设计原则

    来源|腾讯技术工程(ID:Tencent_TEG) 本文结合自身后台开发经验,从高可用.高性能.易维护和低风险(安全)角度出发,尝试总结业界常见微服务接口设计原则,帮助大家设计出优秀的微服务. 1.前 ...

最新文章

  1. 图文解读助你理解和使用正则表达式
  2. Ubuntu虚拟机JeOS安装-2016.08.28
  3. mysql msdtc 不支持_IIS5.1安装后,不支持IIS的问题。(转)
  4. すぬけ君の地下鉄旅行 / Snuke's Subway Trip(AtCoder-2069)
  5. 马斯克:特斯拉FSD测试版V9将再推迟一周
  6. before start of result set_Mac也能有庞大的游戏库,体验腾讯start云游戏,真的流畅...
  7. 这几天阅读的shadowgun的几个shader
  8. PHP 每小时抽奖,项目3:PHP抽奖程序 ,抽奖规则代码 分时间段
  9. 短信中心号码iphone_如何在iPhone上拨打国际电话号码
  10. 各种常用的默认端口号 总结
  11. 类似win7系统泡泡屏保
  12. 小心利用大家的爱国热情来传播Worm.Win32.AutoRun.dgk的网页
  13. 【Godot】通过属性检查器显示对应节点的脚本属性
  14. [转载]菜鸟的草缸 篇一:器材篇(附鱼缸、过滤器、灯、草泥开箱过程)
  15. JAVA面向对象编程学习 (1)语法基础与类与对象
  16. HTML/CSS写的简单的注册页面
  17. “Why Should I Trust You?”:Explaining the Predictions of Any Classifier 论文笔记
  18. 腾讯云搭建多终端《你画我猜》Socket服务器
  19. uniapp开发聊天APP踩坑记录
  20. javascript 设为首页 | 加入收藏夹 JS代码

热门文章

  1. fckeditor2.63 上传图片的一个问题的解决办法
  2. 【AWSL】之Linux磁盘管理与文件系统(fdisk、df、mount、umount、lsblk)
  3. HD2500显卡驱动linux,Intel发布HD Graphics 2500/4000显卡Win10驱动下载
  4. Linux mysql federated_MySQL的FEDERATED引擎实现类Oracle的DBlink
  5. access中如何画斜线_大神支招:如何设计access行政区划菜单
  6. 天津2021年高考成绩查询入口,2021年天津高考成绩查询时间安排 什么时候出分
  7. mPaas-WKWebview网络拦截常见问题
  8. “我想要用我余生,换夜空繁星闪耀”
  9. UE 手游在 iOS 平台运行时内存占用太高?试试这样着手优化
  10. 在以阶段划分的编译过程中,判断程序语句的形式是否正确属于()阶段的工作。