面向对象

面向对象特征和原则

四大特征:封装、抽象、继承、多态

  • 封装
    把数据和对数据的操作隐藏到一个方法体内,对外只暴露这个方法体的接口,让调用者无需考虑内部实现细节只管调用完成对应的功能即可。优点是解耦,方法有明确的功能,内部可以随意修改而不需要考虑外部逻辑,提高了安全性和复用性。

  • 继承
    被继承的叫父类,继承的是子类,子类拥有父类的所有非私有方法和变量,封装提高了代码复用性,但也增加了耦合性,继承有传递性,子类只能继承1个父类却能实现多个接口。

  • 抽象
    和继承类似,抽象是把多个类的共有的行为方法抽取出来,只声明抽象方法,但不实现细节,需要继承的子类覆盖此方法来实现。抽象类可以拥有自己的非抽象方法,如果一个子类没有覆盖抽象类全部抽象方法则该子类也是抽象类,抽象类不可实例化,抽象方法一定在抽象类中。

  • 多态
    对象在不同状态展现出来的不同特性或功能。多态必须要有继承或实现,要有覆写。多态能提高程序扩展性和可维护性。

  • 接口
    接口是特殊的抽象类,接口中只允许有方法的定义而不允许有方法的实现。接口中方法默认public,变量默认是static final,可以用接口名直接访问接口中的变量。一个类可以实现多个接口。

  • 五大原则(也叫SOLID设计原则):单一职责、开放封闭(对扩展开放,对修改封闭,尽量用接口、抽象技术)、里氏替换(父类调用同样适用于子类)、依赖倒置(实现应该依赖于抽象,不应该反过来)、接口隔离原则(不应该强迫实现用不上的接口【比如java8接口允许实现默认方法,即不再强迫实现类实现所有方法】,设计尽量多个专门的接口,否则全部放在一个接口难以维护)

    迪米特法则:低耦合,高内聚。

    组合/聚合复用原则:尽量使用组合和聚合,少使用继承的关系来达到复用的原则。

依赖 关联 聚合 组合

依赖:一个类使用到了另一个类,但关系是弱、临时的。如方法的参数是某个类。
关联:一个使用到了另一个类,一般用成员变量实现。如老师和学生。
聚合:特殊关联,耦合性更强。整体与部分的关系,部分和整体可拆分,部分可属于或者被多个整体共享。如班级和学生、计算机和cpu、开发者和开发团队。
组合:强聚合,部分和整体不可分,部分依赖整体才有意义,整体负责(代表)部分的生命周期。如人和大脑。

内聚和耦合
  • 内聚:度量一个模块内部各个元素彼此结合的紧密程度。分为(内聚性由低到高)偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。也就是说,模块功能越单一,内聚性就越高,模块的独立性就越强。一个模块应该做好一个功能就可以了,不要面面俱到,不然难以维护。
  • 耦合:度量模块之间互相连接的紧密程度。分为(耦合性由低到高)无直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合、内容耦合。也就是说,模块之间联系少,耦合性就越低,模块之间的相对独立性就越强。模块应该管理好自己的事情就可以了,这样即不会太复杂,也便于专注的完成自己的事情。微服务的思想也是这样。对于耦合,如果模块间必须存在耦合,应尽量使用数据耦合,少用控制耦合,限制使用公共耦合的范围,坚决避免使用内容耦合
posted @ 2021-04-23 23:12  i%2  阅读(56)  评论(0)    收藏  举报