solid 是計算機編程中五個良好原則(規則)的縮寫。 solid 允許程序員編寫更易于理解和稍后更改的代碼。 solid 通常與使用面向對象設計的系統一起使用。
讓我們使用車輛示例來解釋 solid 原理。想象一下,我們正在設計一個系統來管理不同類型的車輛,例如汽車和電動汽車,以提供運輸服務。
s?-?單一職責原則(srp)
車輛示例:想象你有一輛汽車。它負責駕駛,但不應該負責處理自己的維護(例如換油或輪胎旋轉)。相反,由一名單獨的機械師負責。
說明:在我們的代碼中,vehicle 類應該只處理與車輛本身相關的事情,比如存儲其品牌和型號。如果我們需要管理維護,我們會為此創建一個單獨的維護類。這樣,每個類都有一個工作或職責,使代碼更易于管理。
class vehicle def initialize(make, model) @make = make @model = model end end class maintenance def initialize(vehicle) @vehicle = vehicle end def perform_maintenance puts "performing maintenance on #{@vehicle.make} #{@vehicle.model}" end end
登錄后復制
o?-?開/閉原理(ocp)
車輛示例:假設您有一輛基本型汽車,現在您想在系統中添加一輛電動汽車。您不必修改現有的汽車類別即可添加電動汽車的功能。相反,您可以通過創建新的電動汽車類來擴展現有功能。
說明:vehicle類是開放擴展的(你可以創建新類型的車輛,如electricvehicle),但它是封閉修改的(你不需要更改vehicle類本身來添加新類型)。
class vehicle def initialize(make, model) @make = make @model = model end def description "#{@make} #{@model}" end end class electricvehicle <hr><h2> l?-?里氏替換原理 (<a style="color:#f60; text-decoration:underline;" href="https://www.php.cn/zt/79544.html" target="_blank">lsp</a>) </h2> <p><strong>車輛示例</strong>:假設您有一支車隊,并且您可以毫無問題地用電動汽車替換任何普通汽車。兩者都應該能夠在不破壞系統的情況下執行其基本功能?-?駕駛?-?。<br><strong>說明</strong>:任何子類(如 electricvehicle)都應該能夠替換其父類(vehicle),而不改變程序的行為。這確保我們的代碼可以以相同的方式處理不同類型的車輛。<br></p> <pre class="brush:php;toolbar:false">class vehicle def initialize(make, model) @make = make @model = model end def drive puts "driving the #{@make} #{@model}" end end class electricvehicle <hr><h2> i?-?接口隔離原則(isp) </h2> <p><strong>車輛示例</strong>:想象一下您有不同類型的車輛:有些可以充電(如電動汽車),有些只能駕駛(如汽油車)。你不希望汽油車必須處理充電相關的方法。<br><strong>說明</strong>:類應該只實現它們需要的接口(或行為)。例如,電動車輛可能同時實現可駕駛和可充電接口,而普通車輛僅實現可駕駛。<br></p> <pre class="brush:php;toolbar:false">module drivable def drive raise notimplementederror, "this #{self.class} cannot drive" end end module chargeable def charge raise notimplementederror, "this #{self.class} cannot be charged" end end class vehicle include drivable def initialize(make, model) @make = make @model = model end def drive puts "driving the #{@make} #{@model}" end end class electricvehicle <hr><h2> d?-?依賴倒置原理(dip) </h2> <p><strong>車輛示例</strong>:想象一輛汽車可以有不同類型的發動機:燃氣發動機或電動發動機。汽車不應該直接依賴于特定的引擎類型,而應該依賴于更通用的引擎接口,這樣它就可以使用任何類型的引擎。<br><strong>說明</strong>:高級模塊(如車輛)不應依賴于低級模塊(如 gasengine 或 electricengine)。兩者都應該依賴于抽象(如引擎接口)。這使得系統更加靈活并且更容易更改。<br></p> <pre class="brush:php;toolbar:false">class Engine def start raise NotImplementedError, "This #{self.class} cannot start" end end class GasEngine <p>通過遵循此車輛示例中的 solid 原則,我們可以構建一個易于維護、擴展和適應新需求的系統。</p> <p>領英:https://www.linkedin.com/in/anandsoni11/</p>
登錄后復制