clear old record

This commit is contained in:
Lostecho
2023-09-10 10:50:53 +08:00
commit 1cd5bb460f
283 changed files with 68653 additions and 0 deletions

34
里氏替换原则.md Normal file
View File

@@ -0,0 +1,34 @@
继承的优点
- 代码共享, 减少创建类的工作量
- 提高代码的重用性
- 子类可以形似父类, 但又异于父类
- 提高代码的可扩展性
- 提高产品或项目的开放性
继承的缺点
- 继承是侵入性的
- 降低代码灵活性
- 增加耦合性
Liskov Substitution Principle
> If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T,the behavior of P is unchanged when o1 is substituted for o2 then S is a subtype of T.(如果对每一个类型为 S 的对象 o1都有类型为 T 的对象 o2使得以 T 定义的所有程序 P 在所有的对象 o1都代换成 o2时程序 P 的行为没有发生变化,那么类型 S 是类型 T 的子类型。)
>
> Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.(所有引用基类的地方必须能透明地使用其子类的对象。)
只要父类出现的地方子类就可以出现, 且替换为子类也不会产生任何错误或异常
1. 子类必须完全实现父类的方法
> 在类中调用其他类时务必要使用父类或接口, 如果不能使用父类或接口, 说明类的设计已经违背 LSP 原则
> 如果子类不能完整地实现父类的方法,或者父类的某些方法在子类中已经发生“畸变”,则建议断开父子继承关系,采用依赖、聚集、组合等关系代替继承。
2. 子类可以有自己的个性
3. 覆盖或实现父类的方法时输入参数可以被放大,
父类 HashMap 输入, 子类 Map 输入, 传入 HashMap, 子类的方法永远不会执行, 想要让子类方法运行, 就必须覆写父类的方法
4. 覆写或实现父类的方法时输出结果可以被缩小