模块独立性
耦合
非直接耦合(Nondirect Coupling) ? ? ? ? ? ? ? 内聚
? 模块内聚性越强,功能独立性越好,对于形成的模块结构有比较好的作用。 ? 要求模块结构达到高内聚,低耦合。 高 内聚性 低 功能内聚 信息内聚 通信内聚 过程内聚 时间内聚 逻辑内聚 巧合内聚 高 功能独立性 低 功能内聚 (Functional Cohesion) ? 一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成 一项具体功能而协同工作,紧密联系,不可分割的,则称该模块为功能内聚模块 ? 功能内聚模块的内聚最高,功能独立性最强 信息内聚 (Informational Cohesion) ? 完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点 通信内聚(Communication Cohesion) ? 如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块 ? 通常,通信内聚模块是通过数据流图来定义的 过程内聚(Procedural Cohesion) ? 使用流程图做为工具设计程序时,如果流程图太大,可以把流程图中的某一部分划出组成模块,就得到过 程内聚模块 – 例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。 时间内聚(Classical Cohesion) ? 时间内聚又称为经典内聚 ? 大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行 – 例如,初始化模块和终止模块就是时间内聚模块。 逻辑内聚(Logical Cohesion) ? 这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪 一种功能。 巧合内聚(Coincidental Cohesion) ? 当几个模块内正好有一段代码是相同的,将它们抽取出来形成单独的模块,即巧合内聚模块。这种模块没 有独立功能,各部分之间没有联系,或联系很松散。 开闭原则(OCP: TheOpen-Close Principle) ?是指一个软件实体应该对扩展开发,对修改关闭,即在不修改源代码的基础上扩展一个系统的行为 依赖倒转原则(DIP: TheDependency Inversion Principle) ?是指抽象不应该依赖于具体,而是具体依赖于抽象 接口隔离原则(ISP: TheInterface Segregation Principle) ?是应该提供小而专的接口,而不是大而全的接口 组合/聚合原则(FCOI: Favor Composition OverInheritance) ?是指优先使用组合/聚合进行复用,而不是继承 迪米特原则(LoD: Law ofDemeter) ?是指一个软件实体应当尽可能少的与其他实体发生相互作用 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!
面向对象设计原则