SOLID هو اختصار لمجموعة من خمسة مبادئ (قواعد) جيدة في برمجة الكمبيوتر. يسمح SOLID للمبرمجين بكتابة التعليمات البرمجية التي يسهل فهمها وتغييرها لاحقًا. غالبًا ما يتم استخدام SOLID مع الأنظمة التي تستخدم تصميمًا موجهًا للكائنات.
دعونا نشرح مبادئ SOLID باستخدام مثال السيارة. تخيل أننا نصمم نظامًا لإدارة أنواع مختلفة من المركبات، مثل السيارات والسيارات الكهربائية، لخدمة النقل.
مثال مركبة: تخيل أن لديك سيارة. إنها مسؤولة عن القيادة، ولكن لا ينبغي أن تكون مسؤولة عن التعامل مع أعمال الصيانة الخاصة بها (مثل تغيير الزيت أو تدوير الإطارات). بدلا من ذلك، ميكانيكي منفصل هو المسؤول عن ذلك.
شرح: في الكود الخاص بنا، يجب أن تتعامل فئة المركبة فقط مع الأشياء المتعلقة بالمركبة نفسها، مثل تخزين طرازها وطرازها. إذا كنا بحاجة إلى إدارة الصيانة، فإننا نقوم بإنشاء فئة صيانة منفصلة لذلك. بهذه الطريقة، يكون لكل فصل وظيفة أو مسؤولية واحدة، مما يجعل إدارة الكود أسهل.
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
مثال مركبة: لنفترض أن لديك سيارة أساسية، والآن تريد إضافة سيارة كهربائية إلى نظامك. لا ينبغي عليك تعديل فئة السيارة الحالية لإضافة ميزات للسيارات الكهربائية. وبدلاً من ذلك، يمكنك توسيع الوظائف الحالية عن طريق إنشاء فئة جديدة للسيارات الكهربائية.
شرح: فئة المركبة مفتوحة للتوسيع (يمكنك إنشاء أنواع جديدة من المركبات مثل المركبات الكهربائية)، ولكنها مغلقة للتعديل (لا تحتاج إلى تغيير فئة المركبة نفسها لإضافة أنواع جديدة).
class Vehicle def initialize(make, model) @make = make @model = model end def description "#{@make} #{@model}" end end class ElectricVehicleL - مبدأ استبدال ليسكوف (LSP)
مثال مركبة: تخيل أن لديك أسطولًا من المركبات، ويمكنك استبدال أي سيارة عادية بسيارة كهربائية دون أي مشاكل. يجب أن يكون كلاهما قادرين على أداء وظيفتهما الأساسية - القيادة - دون كسر النظام.
شرح: يجب أن تكون أي فئة فرعية (مثل ElectricVehicle) قادرة على استبدال فئتها الأصلية (المركبة) دون تغيير سلوك البرنامج. وهذا يضمن أن الكود الخاص بنا يمكنه التعامل مع أنواع مختلفة من المركبات بنفس الطريقة.class Vehicle def initialize(make, model) @make = make @model = model end def drive puts "Driving the #{@make} #{@model}" end end class ElectricVehicleI - مبدأ فصل الواجهة (ISP)
مثال مركبة: تخيل أن لديك أنواعًا مختلفة من المركبات: بعضها يمكن شحنه (مثل السيارات الكهربائية)، والبعض الآخر يمكن قيادته فقط (مثل سيارات الغاز). لا تريد أن تتعامل سيارة تعمل بالغاز مع الطرق المتعلقة بالشحن.
شرح: يجب أن تقوم الفصول الدراسية فقط بتنفيذ الواجهات (أو السلوكيات) التي تحتاجها. على سبيل المثال، قد تقوم السيارة الكهربائية بتنفيذ كل من الواجهات القابلة للقيادة والقابلة للشحن، في حين أن السيارة العادية تنفذ فقط الواجهات القابلة للقيادة.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 ElectricVehicleD - مبدأ انعكاس التبعية (DIP)
مثال مركبة: تخيل أن السيارة يمكن أن تحتوي على أنواع مختلفة من المحركات: محرك غاز أو محرك كهربائي. فبدلاً من الاعتماد بشكل مباشر على نوع محرك معين، يجب أن تعتمد السيارة على واجهة محرك أكثر عمومية حتى تتمكن من استخدام أي نوع من المحركات.
شرح: الوحدات عالية المستوى (مثل السيارة) لا ينبغي أن تعتمد على الوحدات ذات المستوى المنخفض (مثل GasEngine أو ElectricEngine). يجب أن يعتمد كلاهما على التجريدات (مثل واجهة المحرك). وهذا يجعل النظام أكثر مرونة وأسهل للتغيير.class Engine def start raise NotImplementedError, "This #{self.class} cannot start" end end class GasEngineمن خلال اتباع مبادئ SOLID في مثال السيارة هذا، يمكننا بناء نظام يسهل صيانته وتوسيعه والتكيف مع المتطلبات الجديدة.
لينكد إن: https://www.linkedin.com/in/anandsoni11/
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3