OOP复习笔记之一

反射
啥时候用 再调用时候决定就用反射(性能可能有影响)

封装
多态 调用父类执行子类 (抽象 多态)
继承 is a 一个事务代表他们

封装
OOP复习笔记之一_第1张图片

面向对象的设计原则
1 开闭原则对扩展开放,对修改关闭
理想条件下的目标
eg 有个 项目 一 需要 class 1 F1() F2 ()
第二个 项目 用到 class1 F1() F2() F3()
问咋办
第一个解决方案 打开class1 写入 F3();
这种方式就违背了 开闭原则
第二个 解决方法 class2 继承 class1 写入 F3(); 有的总是需要 对原来的做一定的修改
所以是理想的

2 类的单一职责 (一个类的定义)
适用于基础类 不适用基于复杂的聚合类
一个类有且只有一个改变它的原因

3 面向接口编程而非面向实现 (写一个类时从哪入手)
先做好一个好对外的接口(公有的方法),
实现不是第一步要思考.
先思考做什么,为其他的组件提供什么功能,
而不是去先思考功能的实现
OOP复习笔记之一_第2张图片
4使用组合而非继承 (复用的最佳实践)
如果仅仅为了复用优先选择组合复用,而非继承复用。
组合的耦合性对继承低

5 依赖倒置 倒转( 依赖抽象)
客户端代码尽量依赖抽象的组件,因为抽象的是稳定的。实现是多变的。

6里氏替换 (继承后的重写)
父类出现地方可以被子类替换掉。要保护替换前的原有的工作,在替换后依然保持不变
子类在重写父类方法时,尽量选择扩展重写。(用到父类的方法)
所有的子类都不用 全部重写 !写成抽象
子类要用到 父类那就写成虚方法

7 接口隔离 (功能拆分)
尽量定义小而精的接口,不要定义大而全的接口
小接口之间功能隔离,实现类需要多个功能时可以选择多实现.或接口

8 迪米特法则
不要和陌生人说话
类与类交互时,在满足功能要求的基础上,
传递的数据量越少越好.因为这样可能降低耦合度。
追求的目标:代码低耦合 好!便于替换
OOP复习笔记之一_第3张图片
比如说 A调用B里面两个数据 但是B类数据很多 我们就可以用一个接口里面有两个方法来调用B的数据 B实现接口
OOP复习笔记之一_第4张图片

你可能感兴趣的:(OOP笔记)