**模块化开发的最大价值是分治、分治、分治!
模块化能分离职责,从而达到分治! 达到复用!
组件跟模块区别不大,都是基于功能的划分。只是组件偏向于发行的概念,强调的是“跨项目的可重用性”这层意思。模块偏向于设计的概念,强调的是单个项目中的“分离职责”这层意思。**
模块:
模块,又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合(即程序代码和数据结构的集合体),或指大型软件系统的一部分。
模块化:
*模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程。模块化用来分割,组织和打包软件。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。
**模块化趋势:**模块化是在传统设计基础上发展起来的一种新的设计思想,现已成为一种新技术被广泛应用,尤其是信息时代电子产品不断推陈出新,模块化设计的产品正在不断涌现。如何使产品的模块化设计全方位地满足市场的多样化需求,应当引起企业经营者、新产品开发人员及其标准化研究者的高度重视。模块化设计已被广泛应用于机床、电子产品、航天、航空等设计领域,但至今模块化术语尚未给出公认的权威性定义。企业一方面必须利用产品的批量化、标准化和通用化来缩短上市周期、降低产品成本、提高产品质量,另一方面还要不断地进行产品创新使产品越来越个性化,满足客户的定制需求。这样,如何平衡产品的标准化、通用化与定制化、柔性化之间的矛盾,成为赢得竞争的关键能力。平台化、模块化的产品设计和生产可以在保持产品较高通用性的同时提供产品的多样化配置,因此平台化、模块化的产品是解决定制化生产和批量化生产这对矛盾的一条出路。
模块化设计:
原则:少量的模块组成尽可能多的产品。
方法:一个独立的功能作为一个独立的模块,通过模块的选择和组合可以构成不同的产品,以满足市场的不同需求的设计方法。
首要要理解模块与对象的相同与不同:
先看概念:
模块:
相同:都是把一些属性和方法放在一起。
不同:
模块化编码:就是一个独立的功能作为一个独立的模块来组织代码。
面向对象编码:就是以面向对象的原则组织代码。如封装、继承、多态等。
模块化编码可以看做是把代码组织起来,独立完成功能。面向对象编码核心是识别对象,多个对象协作完成某个功能。
可以参考:https://sanwen8.cn/p/1b1uzta.html
可以参考:http://blog.csdn.net/tianhenkong/article/details/42433521
一下参考:https://zhidao.baidu.com/question/78606176.html
1、组件,模块:
相同:都是基于功能划分的单位。比如说完成网络功能的组件、模块、完成统计功能的组件、模块; 这二者没有上下级的包含关系,模块可以由多个组件构建,独立的组件也通常由多个模块实现。
不同:
组件,偏向发行的概念(outside):
1、强调的是“跨项目的可重用性”这层意思。比如“XXX采集卡通用远程监控组件”,表示这个东东是完成远程监控功能,并且是为了可重用而开发的. 这个组件本身由采集卡驱动、网路传输、信号处理等诸多模块共同实现。
2、作为需要被第三方客户使用的独立工具,组件一般都有独立的封装。比如一个组件用符合COM接口规范的DLL发行,某些时候发行库大到包含一系列可执行文件、系统服务。
模块,偏向设计的概念(inside):
1、用于在项目中划分相对独立的功能。比如说公司为了开发一套组件,请您设计了几个算法模块;在一些场合,模块本身就要引用多个组件,典型的是远程医学系统中视频会议模块就利用了多种第三方开发的组件。
2、模块更偏重逻辑上区分,封装上可以和其他模块混合,也许发行的时候,把所有模块合并为一个DLL一起发行(客户通常没必要知道你的系统由哪些模块组成)。
2、对象:
和上面二者没有并列关系,只是自然事物在计算机上的简化表示的集合,比如描述学生的属性(名字、年龄、成绩等)和维护属性的方法(如对成绩排序等);组件和模块都可以使用面向对象的方法来实现,通过处理一定的对象,完成自身的功能。