دانای اطلاعات ( Information Expert ) بر طبق این اصل میتوان برای واگذاری
هر مسئولیت، کلاسی را انتخاب کرد که بیشترین اطلاعات را در مورد انجام آن در اختیار
دارد و لذا نیاز کمتری به ایجاد ارتباط با دیگر مولفهها خواهد داشت. در مثال زیر مشاهده میکنید که کلاس User، اطلاعات کاملی را از عملیات اضافه کردن آیتمی را به لیست خرید و تسویه حساب، ندارد و پیاده سازی این عملیات در این کلاس، نیاز به ایجاد وابستگیه ...
همانطور که قول داده بودم ، به اصول GRASP میپردازیم. اصول GRASP-General Responsibility Assignment
Software Principles این اصول به بررسی نحوه تقسیم
وظایف بین کلاسها و مشارکت اشیاء برای به انجام رساندن یک مسئولیت میپردازند.
اینکه هر کلاس در ساختار نرم افزار چه وظیفهای دارد و چگونه با کلاسهای دیگر
مشارکت میکند تا یک عملکرد به سیستم اضافه گردد. این اصول به چند بخش تقسیم میشوند: کنترلر ( Controlle ...
اصل هفتم: Liskove Substitution
Principle "ارث بری باید به
صورتی باشد که زیر نوع را بتوان بجای ابر نوع استفاده کرد" این اصل میگوید اگر قرار است
از ارث بری استفاده شود، نحوهی استفاده باید بدین گونه باشد که اگر یک شیء از کلاس
والد ( Base-Parent-Super type ) داشته باشیم، باید بتوان آن را
با شیء کلاس فرزند ( Sub
Type-Child ) بدون
هیچ گونه تغییری ...
اصل چهارم: Starve for loosely coupled designs "به دنبال طراحی با
اتصال سست بین اجزا باش" اتصال بین اجزای برنامه نویسی
باعث سختتر شدن مدیریت تغییرات میشود؛ چرا که با تغییر یک بخش، بخشهای متصل نیز
دچار مشکل خواهند شد. اتصالها از لحاظ نوع قدرت متفاوتند و اساسا سیستمی بدون
اتصال وجود ندارد. لذا باید به دنبال یک طراحی با کمترین میزان قدرت اتصال یا
همان سست اتصال باشیم. تا به اینجا ، اصلهای دوم و سوم ما
...
قصد دارم مجموعه ای کامل از اصول طراحی شیء گرا، الگوهای
طراحی و best practice های مربوطه را ارائه دهم. از این رو
ابتدا با اصول طراحی شروع میکنم. سپس در مقالات آتی به الگوهای مختلف خواهم
پرداخت و تا جایی که معلومات اجازه دهد مشخص خواهم کرد که هر الگو متمرکز بر رعایت
کدام یک از اصول است و اینکه آیا مناسب است از الگوی مورد نظر استفاده کنیم. این مطالب نیز چکیده ای از آموزشهای Lynda, Pluralsight , SkillFeed ...