这是我在学习过程中总结的知识
目的是希望日后回来看或者需要用的时候可以 一目了然 # 的回顾、巩固、查缺补漏
不追求详细相当于书本的精简版或者说是导读(想看详细的直接对应翻书),但会尽力保证读者都能快速理解和快速使用(随理解加深会总结的更加精简),但必要时会附上一些较详细解释的链接
脚注是空白的:表示还没弄懂的知识,了解后会添加
文章目录
10.1 面向对象六大原则
10.1.1 单一职责原则
· 单一职责原则 Single Responsibility Principle 简称SRP
· 一个类只做一件事,类中的函数所做的工作是高度相关的
· 最大的问题是对职责的定义,什么是类的职责,怎么划分类的职责。界定好的话就是高内聚,低耦合
优点
1.类的复杂性降低,职责定义清晰
2.可读性提高
3.可维护性高
4.变更引起的风险降低
10.1.2 里氏替换原则
这个原则依赖于继承和多态
就是任何父类、父接口出现的地方子类都可以出现,实现了可扩展性
网上的框架就是定义了一系列相关的逻辑骨架与抽象,使得用户可以将自己的实现注入框架中
举例
A类要实现fly接口的一个方法,但是这个要求比较特殊
可以在这个方法中返回一个实现了fly接口(父接口)的符合A类需求的实现类C(子实现类)来完成A类的特殊要求
A类实现了fly接口的飞行方法,但是A类却是一个可以正常飞行又可以像火箭一样飞的对象
可以在这个方法中返回一个实现了fly接口飞行方法(父接口)的实现类C重写了飞行方法为像火箭那样飞(子实现类)来完成A类的特殊要求
优点
1.减少创建类的工作量
2.提高代码重用性
3.提高代码可扩展性
4.提高项目开放性
缺点
1.继承了之后就必须有用父类的所有属性和方法
2.降低代码灵活性
3.增强耦合性
10.1.3 依赖倒置原则
1.高层模块不应该依赖低层模块,两者都应该依赖其抽象
2.抽象不应该依赖细节
3.细节(实现类、实现接口或继承抽象类而产生的类)应该依赖抽象(接口或抽象类)
细节的特点就是可以直接被实例化,也就是加上一个new就产生一个对象
一句话来说:依赖倒置原则就是模块间的依赖通过抽象发生,实现类直接不发生直接的依赖关系
举例
A类依赖于fly接口实现了飞行方法,但是却不依赖于C类(火箭飞)。因为A有时要正常飞,有时又要火箭飞。这样就很明显了
优点
1.低耦合
2.扩展性好
3.降低并行开发的风险
10.1.4 开闭原则
对扩展开发、对修改关闭
和上面3个原则一样,面向接口编程
10.1.5 接口隔离原则
一个类对另一个类的依赖应该建立在最小的接口上
当一个接口太大时,要细分成多个小接口
优点
1.降低耦合性
2.提升代码可读性
3.隐藏实现细节
10.1.6 迪米特原则
也称最少知识原则:一个对象应该对其他对象有最少的了解
通俗来讲:一个类应该对自己需要耦合或调用的类知道最少(有点类似接口隔离原则)
调用者只需要知道它需要的方法即可
优点
1.降低复杂度
2.低耦合
3.增加稳定性
总结六大原则
- 抽象
- 单一职责
- 最小化
设计模式与反模式
总的来说,设计模式总结了特定问题下的正确解决方案
反模式则告诉你在特定的问题上的错误解决方案以及它们的原因、解决方案