شماره تماس 09336863931 | 09178169907 پست الکترونیک provid.ir@gmail.com

آموزش اصل Inversion of Control در برنامه نویسی #12

آموزش اصل Inversion of Control در برنامه نویسی #12 را در این قسمت از وبسایت آموزش برنامه نویسی پرووید دانلود کنید.

در بند اول از تعریف اصل Dependency Inversion گفتیم که ماژول های سطح بالا نباید به ماژول های سطح پایین وابسته باشند. بلکه هر دوی آنها باید به Abstraction وابسته باشند. در اینجا بیایید تصمیم بگیریم که کدام کلاس ماژول سطح بالا و کدام کلاس ماژول سطح پایین است. ممکن است حدس زده باشید که ماژول سطح بالا کلاس یا ماژولی است که به بقیه ی کلاس ها یا ماژول ها وابستگی دارد. بنابراین در مثال ما CustomerBusinessLogic که به کلاس DataAccess وابسته است ماژول سطح بالا و DataAccess ماژول سطح پایین است. بنابراین اگر بخواهیم بند اول از اصل Dependency Inversion را پیاده سازی کنیم نباید کلاس CustomerBusinessLogic به کلاس DataAccess وابسته باشد. هر دوی آنها باید به Abstraction وابسته باشند. بند دوم در تعریف اصل Dependency Inversion می گفت که Abstraction ها نباید وابسته به جزئیات باشند. بلکه جزئیات باید وابسته به Abstraction باشند.

انتزاع یا Abstraction چیست؟

انتزاع یا Abstraction و کپسولهای سازی یا Encapsulation دو تا از مهمترین اصول در برنامه نویسی شی گرا هستند. تعریف های زیادی توسط افراد مختلف برای این دو اصل در نظر گرفته شده است. اما بیایید در قسمت بعدی در قالب یک مثال معنی Abstraction را درک کنیم.

بسته ی جامع آموزش Inversion of Control و IoC Container ها

از شما دعوت می کنیم که از بسته ی جامع آموزش Inversion of Control و IoC Container ها دیدن کنید.

دو مفهوم Abstract و Concrete در طراحی شی گرا اغلب متضاد هم هستند. در زبان انگلیسی چیزی که Abstract باشد غیر ملموس یا Non-concrete است. از نقطه نظر برنامه نویسی دو کلاس CustomerBusinessLogic و DataAccess کلاس های Concrete هستند. به این معنا که ما می‌ توانیم از آنها اشیایی بسازیم. بنابراین Abstraction در زبان های برنامه نویسی به معنی ساختن یک Interface یا کلاس Abstract ایست که Non-concrete باشد یا به عبارتی نتوانیم از آن یک شی بسازیم.

همانطور که ممکن است بدانید در زبان های برنامه نویسی شی گرا از قبیل سی شارپ نمی‌توان یک شی از یک Interface یا یک کلاس Abstract ساخت. اگر بخواهیم این مفاهیم را در کنار قواعد مربوط به Dependency Inversion بگوییم کلاس CustomerBusinessLogic که یک ماژول سطح بالا است نباید به کلاس DataAccess که یک کلاس Concrete و البته ماژول سطح پایین است وابسته باشد. بلکه هر دوی این کلاس ها باید وابسته به Abstraction باشند یا به عبارتی هر دوی این کلاس ها باید وابسته به Interface یا کلاس Abstract باشند.

نظر بدهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *