架构师训练营 - 第二周总结
什么是面向对象编程?面向编程的三大特性?
面向对象编程:
面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石 。
面向对象的三大特性:封装、继承、多态。
封装用于隐藏接口的实现细节,继承表示的是对象与对象之间的is-a关系,过度使用继承,继承层次过深过复杂,就会导致代码可读性、可维护性变差。所以一般推荐在实际应用当中使用组合,即has-a关系。多态指的是子类可以替换父类,从而做到运行时传入不同的子类,调用不同的子类方法。多态特性能提高代码的可扩展性和复用性。
面向对象设计:充血模型和贫血模型?DDD领域设计?
贫血模型:将数据和业务逻辑分割在不同的类中。
充血模型:将数据和业务逻辑封装在同一类中。
领域驱动设计,即 DDD,主要是用来指导如何解耦业务系统,划分业务模块,定义业务领域模型及其交互。
面向对象设计的目的:高内聚、松耦合
易拓展
更强壮
可移植
更简单
SOLID 设计模式的六大原则有:
Single Responsibility Principle:单一职责原则
一个类或者模块只负责完成一个职责(或者功能). 单一职责原则是为了实现代码高内聚、低耦合,提高代码的复用性、可读性、可维护性。
Open Closed Principle:开闭原则
软件实体(模块、类、方法等)应该“对扩展开放、对修改关闭”. 添加一个新的功能,应该是通过在已有代码基础上扩展代码(新增模块、类、方法、属性等),而非修改已有代码(修改模块、类、方法、属性等)的方式来完成
Liskov Substitution Principle:里氏替换原则
子类对象(object of subtype/derived class)能够替换程序(program)中父类对象(object of base/parent class)出现的任何地方,并且保证原来程序的逻辑行为(behavior)不变及正确性不被破坏。
Law of Demeter:迪米特法则
不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口. 迪米特法则是希望减少类之间的耦合,让类越独立越好。每个类都应该少了解系统的其他部分。一旦发生变化,需要了解这一变化的类就会比较少.
Interface Segregation Principle:接口隔离原则
客户端不应该被强迫依赖它不需要的接口.
如果把“接口”理解为一组接口集合,可以是某个微服务的接口,也可以是某个类库的接口等。如果部分接口只被部分调用者使用,我们就需要将这部分接口隔离出来,单独给这部分调用者使用,而不强迫其他调用者也依赖这部分不会被用到的接口。
如果把“接口”理解为单个 API 接口或函数,部分调用者只需要函数中的部分功能,那我们就需要把函数拆分成粒度更细的多个函数,让调用者只依赖它需要的那个细粒度函数。
如果把“接口”理解为 OOP 中的接口,也可以理解为面向对象编程语言中的接口语法。那接口的设计要尽量单一,不要让接口的实现类和调用者,依赖不需要的接口函数。
评论