کلمه جو
صفحه اصلی

قانون دمیتر

دانشنامه عمومی

قانونِ دمیتر∗ یا «قاعده حداقلِ دانش»∗ راهبردی در طراحی نرم افزار، بخصوص برنامه نویسی شی گراست. در شکلِ عمومی اش «دمیتر» (LoD)حالتِ خاصی از جفتگریِ ضعیف است. این راهبرد در دانشگاه شمال شرقی در ۱۹۸۷ ایجاد و به صورتِ زیر خلاصه شده است:
هر واحد باید اطلاعی اندک از سایر واحدها داشته باشد؛ البته تنها از واحدهایی که دارای رابطهٔ «نزدیک» با این واحد دارند،
هر واحد تنها باید با دوستانش حرف زند؛ از غریبه ها دوری کن
تنها با دوستِ نزدیکش حرف بزند
شالودهٔ این قانون آن است که تا حد ممکن هر شی از ساختار و ویژگی های هر چیزِ دیگری در سیستم ناآگاه باشد. این ناآگاهی شامل زیر-اجزائش نیز می شود. این قانون بخشی از پنهان سازی اطلاعات است. قانون نامش را از پروژه ایی به همین نام گرفته که پروژه ایی در سبکِ جنبه گرایی است. نام پروژه به افتخارِ دمیتر، «مادرِ توزیع» و «خدای کشاورزی» در اساطیر یونان نامگذاری شده بود. از جنبهٔ دیگر، بخاطر دیدگاهِ از «پایین به بالا» نامگذازی مناسب بود.
زمانی که قاون را بر روی برنامه های شی گرای اعمال می نماییم، می توان قانون را با نامِ صحیح ترش: «قانون دمیتر برای توایع/متدها» یاد کرد(LoD-F). در این حالت شی ایی مانند A می تواند یک سرویس (متد) از یک نمونهٔ شی ایی از B را درخواست نماید؛ ولی شیٰء A نمی تواند از طریقِ B به شیءِ دیگری، مانندِ C، دست پیدا نماید و سرویسی را دریافت نماید. جهتِ انجام این کار، شیءِ A به وضوح نیاز به دانشِ بیشتر از ساختارِ داخلیِ شیءِ B دارد. فاصلِ B نیازمندِ تغییر است تا در صورت لزوم بتواند نیازهایِ شیءِ A، را پاسخگو باشد. نیازی که درباره زی-اجزاء شیءِ B است. می توان در روشی جایگزینِ به شیءِ A اجازهٔ دسترسی مستقیم به شیءِ C را داد تا درخواستش را به طور مستقیم به شیءِ C دهد. در صورتِ رعایت قانونِ دمیتر، این تنها شیءِ B است که از ساختارِ داخلی اش آگاه است.
اگر تابعِ (متدِ) «m» از شیءِ «O» موردِ نیاز باشد؛ این فراخوانی تنها یکی از اشکالِ زیر است:


کلمات دیگر: