SOLID 是面向对象编程的五个基本原则,它们可以帮助开发人员设计出可维护、可扩展的代码。以下是 SOLID 学习的详细路线图:
单一职责原则 (Single Responsibility Principle)
单一职责原则指的是一个类或者模块应该只有一个职责,这样可以使得代码更加可读、可维护、易于扩展。
例如,我们有一个 User
类,负责用户的登陆和注册,但是这个类同时还包含了发送邮件的逻辑。如果我们想要修改发送邮件的方式,那么就需要修改 User
类的代码,这显然不符合单一职责原则。
-- -------------------- ---- ------- ----- ---- - --------------- --------- - -- ---- - ------------------ --------- - -- ---- - ------------------ -------- --- - -- ------ - -
正确的做法是将发送邮件的逻辑拆分到一个独立的类中,这样 User
类就只负责用户的登陆和注册了。
-- -------------------- ---- ------- ----- ------------ - ------------------ -------- --- - -- ------ - - ----- ---- - ------------------------- - ----------------- - ------------- - --------------- --------- - -- ---- - ------------------ --------- - -- ---- - ------------------ -------- --- - ------------------------------------ -------- ---- - -
开闭原则 (Open/Closed Principle)
开闭原则指的是软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。也就是说,我们应该通过扩展来增加功能,而不是通过修改已有的代码来实现。
例如,我们有一个 Shape
类,它有一个 draw
方法用于绘制图形。现在,我们想要新增一个矩形类型的图形,应该怎么做呢?
一种错误的实现方式是直接修改 Shape
类的 draw
方法,添加矩形的绘制逻辑。这样做的问题是如果以后再增加其他类型的图形,我们又需要修改 Shape
类的代码,这显然是不可行的。
-- -------------------- ---- ------- ----- ----- - ------ - -- ------ - - -- ------------ ----- -- ---- -- ----- ----- - ------ - -- ---------- --- --------- - -- ------ - ---- -- ---------- --- --------- - -- ------- - ---- -- ---------- --- ------------ - -- ------ - - -
正确的做法是通过继承来实现,新增一个 Rectangle
类并继承自 Shape
类,然后在 Rectangle
中实现矩形的绘制逻辑。
-- -------------------- ---- ------- ----- ----- - ------ - -- ------ - - ----- --------- ------- ----- - ------ - -- ------ - -
这样做的好处是,我们可以随时新增其他类型的图形,而不需要修改已有的代码。
里氏替换原则 (Liskov Substitution Principle)
里氏替换原则指的是子类型必须能够替换掉它们的父类型。也就是说,在任何使用父类型的地方,都应该能够使用其子类型,而且不会影响程序的正确性。
例如,我们有一个 Vehicle
类,它有一个
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/53501