写在前面
用面向对象的思维去思考问题,使得代码容易维护,扩展,复用。
可以将面向对象中,类理解为古代印刷字体的模子,对象理解成复刻出的字。没改进时,一句话一个模子,改进后的活字印刷就是一个字一个模子,容易维护,扩展,复用,这样是不是清晰很多了呢?
耦合性:是也叫耦合度,是对模块间关联程度的度量。
我们通过程序的封装、继承、多态把程序的耦合性降低。这样在修改需求时,修改相关类就可以,而不是修改整个文件。
几个说明:
- 尽可能解决重复代码。
- swich的性能比if好,但是他不能判断条件,只是值相等。
- 仅对程序中呈现出频繁变化的那部分做出抽象,对于程序中每个部分可以做出抽象不好,拒绝不成熟的抽象和抽象本身一样重要。
原则
1.单一职责原则
就一个类而言,应该仅有一个能引起它变化的原因。
2.开放-封闭原则
类、模块、函数等应该可以扩展,而不能修改。就是多扩展,比如一国两制方针,社会主义制度不变,港澳就是扩展。
3.里氏替换原则(LSP)
- 子类必须能够替换掉它的父类。
- 只有当子类可以替换掉父类,软件单位的功能不受影响时,父类才能真正的被复用,而子类也能够在父类的基础上添加新的行为。
- 由于这样的原则,才使得开放-封闭原则成为了可能,使得父类类型的模块在无需修改的情况下就可以扩展。
4.依赖倒转原则
针对接口编程,比如主板上的内存条,cpu,都是对接口进行高内聚的。
模式
1.简单工厂模式
一个单独的类来创造各种实例,这就是工厂。如计算器的加减乘除。
2.策略模式
它定义了算法家族,就是算法分别封装起来,让它们之间可以相互替换,算法的变化不会影响到用算法的客户。如商场的打折算法。