类 - 类 继承:"is-a" -- 正方形 extend 长方形 依赖:偶然性 临时性 非常弱 -- 我吃东西(食物 x) x in {肉,蔬菜,水果,薯片...} 今天吃什么有随机想 关联:长期性,平等的、关联可以是单向、双向的 -- 强依赖关系 程序员类,所掌握的语言就是他的一个属性 聚合:代码表现同"关联" 整体与部分之间可以分离,各自生命中期分开 组合:a拥有b,a没了b也就没了,实心。 你和你的心脏
低耦合 - 高内聚 内聚性: 又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。 所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
耦合性: 也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
内容耦合:一个模块直接访问另一模块的内容,则称这两个模块为内容耦合。 若在程序中出现下列情况之一,则说明两个模块之间发生了内容耦合:
- 一个模块直接访问另一个模块的内部数据。
- 一个模块不通过正常入口而直接转入到另一个模块的内部。
- 两个模块有一部分代码重叠(该部分代码具有一定的独立功能)。
- 一个模块有多个入口。
SOLID原则 s单一职责:对象应该仅具有单一的功能 o开闭:软件体应该对扩展是开放的,但对修改封闭的 l里氏替换:程序中的对象应该是可以在不改变程序正确性的前提下被它的子类对象所替换的 i接口隔离:多个特定客户端接口要好于一个宽泛用途的接口 d依赖反转:高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口; 抽象接口不应该依赖于具体实现,而具体实现则应该依赖于抽象接口。