یا « » راهبردی در طراحی ، بخصوص . در شکلِ عمومی‌اش «دمیتر» (LoD)حالتِ خاصی از است. این راهبرد در در ۱۹۸۷ ایجاد و به صورتِ زیر خلاصه شده است: 
 
 
 شالودهٔ این قانون آن است که تا حد ممکن هر شی از ساختار و ویژگی‌های هر چیزِ دیگری در سیستم ناآگاه باشد. این ناآگاهی شامل زیر-اجزائش نیز می‌شود. این قانون بخشی از است. قانون نامش را از به همین نام گرفته که پروژه‌ایی در سبکِ است. نام پروژه به افتخارِ ، «مادرِ توزیع» و «خدای » در نامگذاری شده بود. از جنبهٔ دیگر، بخاطر دیدگاهِ از «پایین به بالا» نامگذازی مناسب بود.
 زمانی که قاون را بر روی برنامه‌های اعمال می‌نماییم، می‌توان قانون را با نامِ صحیح‌ترش: «قانون دمیتر برای توایع/متدها» یاد کرد(LoD-F). در این حالت شی‌ایی مانند می‌تواند یک سرویس (متد) از یک نمونهٔ شی‌ایی از را درخواست نماید؛ ولی شیٰء به شیءِ دیگری، مانندِ ، دست‌پیدا نماید و سرویسی را دریافت نماید. جهتِ انجام این کار، شیءِ به وضوح نیاز به دانشِ بیشتر از ساختارِ داخلیِ شیءِ دارد. فاصلِ نیازمندِ تغییر است تا در صورت لزوم بتواند نیازهایِ شیءِ ، را پاسخگو باشد. نیازی که درباره زی-اجزاء شیءِ است. می‌توان در روشی جایگزینِ به شیءِ اجازهٔ دسترسی مستقیم به شیءِ را داد تا درخواستش را به طور مستقیم به شیءِ دهد. در صورتِ رعایت قانونِ دمیتر، این تنها شیءِ است که از ساختارِ داخلی‌اش آگاه است.
 اگر تابعِ (متدِ) « » از شیءِ « » موردِ نیاز باشد؛ این فراخوانی تنها یکی از اشکالِ زیر است: 
 
 
 
 
 به صورِ دقیق‌تر، یک شیء، بهتر است تا از فراخوانی اعضای یک شیء که توسطِ متدِ دیگری پس فرستاده شده، خودداری نماید. به طور واضح‌تر، در زبان‌های جدید که از «.» برای فراخوانیِ متدِ یک شیء استفاده می‌کنند، می‌توان قانون را به صورتِ «تنها از یک نقطه استفاده کن» درآورد. قانونِ دمیتر درموردِ « » شکسته شده. اما « » نمایشی صحیح از قانون است. به عنوانِ یک مثالِ ساده؛ برای اینکه به یک اسب دستورِ حرکت دهیم؛ لازم نیست تا به هرپای اسب این دستور داده شود. اسب خودش دستور حرکت به پاهایش را صادر می‌کند.
 برتری قانونِ دمیتر در « » و « » در نرم‌افزار است. ااز آنجا که اشیا وابستگیِ کمتری به ساختارِ اشیاء دیگر دارند، تغییرات در اشیا می‌تواند بدون نیاز به اطلاع به سایر اشیا صورت گیرد. بَسیلی و همکارانش نتایجِ عملی‌ایی را منتشر کردند که نشان می‌داد «پاسخِ برای یک کلاس» (پ. س. ک: تعداد متدهایی که دارای پتانسیلِ فراخوانی یک متد هستند) می‌تواند احتمالِ را کاهش دهد. با پیروی از قانونِ دمیتر می‌تواند «پ. س. ک» را کاهش دهد. درهر حال؛ مقدارِ «متدِ وزندار به ازای کلاس» (تعداد متدهای هر کلاس) را افزایش می‌دهد که خود باعث افزایشِ احتمالِ « » خواهد شد. معماریِ چندلایه‌ایی می‌تواند به عنوانِ سازوکارِ پیاده‌سازیِ قانونِ دمیتر در باشد.
 در سطعِ متد، LoD، به سمتِ یک فاصلِ کمینه حرکت می‌کند؛ که باعثِ خواهد شد تا تنها اطلاعاتی که برایِ کارش نیاز دارد دسترسی داشته باشد که این شامل آگاهی اندکی از تعدادِ اندکی از متدهای سایر اشیایی است که با این شی رابطه نزدیک دارند. از طرفِ دیگر، در سطحِ کلاس LoD، منجر به بزرگ شدن فاصل خواهد شد؛ چراکه LoD نیازمندِ متدهای کمکی زیادی‌ست تا از ورودِ بیش از حد به داخلِ یک شی جلوگیری شود. راه‌حلی که برای این مسئله وجود دارد کمک گرفتن از رهیافتِ « »
{"title": "قانون دمیتر", "link": "https://fa.wikipedia.org//w/index.php?title=%D9%82%D8%A7%D9%86%D9%88%D9%86_%D8%AF%D9%85%DB%8C%D8%AA%D8%B1&oldid=28980313", "language": "fa"}