六大设计原则SOLID
单一职责原则(Single Responsibility Principle)
单一职责原则:应该有且仅有一个原因引起类的变更。
单一职责指的是,一个类,一个函数(方法)只负责一个单一的职责。
- 降低复杂度提高代码的可读性
- 提高可维护性
开闭原则(Open Closed Principle)
类、模块、函数,可以去扩展,但不要去修改。如果要修改代码,尽量用继承或组合的方式来扩展类的功能。
开闭原则是指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。也就是说一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。
- 提高复用性
- 提高可维护性
里氏替换原则(Liskov Substitution Principle)
里氏替换原则:所有引用基类的地方必须透明的使用其子类的对象。
该原则是为了解决继承extends的侵入性、灵活性和耦合度。历史替换原则通俗的说就是父类能出现的地方,子类就可以出现,而且替换为子类也不会产生任何错误或异常。增加代码的健壮性和兼容性。
- 子类必须完全实现父类的方法
- 子类可以有自己的个性
- 覆盖或实现父类的方法时输入参数可以被放大(函数的重载)
- 覆写或实现父类的方法时输出结果可以被缩小
迪米特法则(Law of Demeter)
一个对象应该对其他对象有最少的了解
迪米特法则又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的 public 方法,不对外泄露任何信息。
- 类间解耦,肉耦合后提高类的复用率
接口隔离原则(Interface Segregation Principle)
接口隔离原则:不要对外暴露没有实际意义的接口。
- 接口要尽量小(根据接口隔离原则拆分接口时,首先必须满足单一职责原则。)
- 接口要高内聚(高内聚就是提高接口、类、模块的处理能力,减少对外的交互。)
- 定制服务(采用定制服务就必然有一个要求:只提供访问者需要的方法)
- 接口设计是有限度的(接口的设计粒度越小,系统越灵活,这是不争的事实。但是,灵活的同时也带来了结构的复杂化,开发难度增加,可维护性降低,)
依赖倒置原则(Dependence Inversion Principle)
依赖倒置原则:高层模块不应该依赖于低层模块,而应该依赖于抽象。抽象不应依赖于细节,细节应依赖于抽象。
- 依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发(多人)引起的风险,提高代码的可读性和可维护性。