study notes-SOLID原则

solid principle

  • S: 单一职责原则(single responsibility principle, SRP)
  • O: 开/闭原则 (Open/Closed principle, OCP)
  • L: 里氏替换原则 (Likov substutution principle, LSP)
  • I: 接口分离原则 (Interface sefregation principle, ISP)
  • D: 依赖倒置原则 ( Dependency inverrsion principle, DIP)

single responsibility principle

A class should have just one reason to change.
一个类被修改的原因只能有1个。

Open/Closed principle

Classess should be open for extension but closed for modification.
类在扩展时应该是开放的,在修改时应该是关闭的。

Likov substutution principle

When extending a class, remember that you should be
able to pass objects of the subclass in place of objects of
the parent class without breaking the client code.
当扩展一个类时,应该在不破坏客户端的情况下用子类替换父类。
意思就是,对于任何类,客户端都应该能够不加区分地使用其所有子类,甚至不需要注意,因此在运行时也不会影响期望地行为。这意味着客户端是完全隔离的,即便类层次结构发生了变化,它也意识不到。或者也可理解为,如果正确地实现了层次结构,客户端类也就能够使用任何子类地实例,甚至在使用过程中都不知道使用的是子类的实例,这些对象应该是可以替换的。

Interface sefregation principle

Clients shouldn’t be forced to depend on methods they
do not use.
客户不应该被迫依赖他们不使用的方法。
接口分离原则指出,与其定义一个提供大量方法的接口,不如将其分成多个接口,这样每个接口包含的方法都更少(最好只有一个),且范围具体而准确。通过将接口分解为尽可能小的单元,有助于提高代码的重用性,且每个要实现这些接口的类都很可能是高度内聚的,因为其行为和职责都非常明确。

Dependency inverrsion principle

High-level classes shouldn’t depend on low-level classes. Both should depend on abstractions. Abstractions shouldn’t depend on details. Details should depend on abstractions.
高层级的代码不应该依赖于低层级的代码。它应该依赖于抽象。抽象不应该依赖于细节。细节应该依赖于抽象。
依赖导致原则指出:让代码独立于那些脆弱、易变或不受我们控制的事情。依赖倒置指的是不应该让我们的代码去适应细节或具体的实现,而应该反过来,通过API迫使

你可能感兴趣的:(设计模式,开发语言)