علی قدرتی
علی قدرتی
خواندن ۲ دقیقه·۳ سال پیش

Information Expert - دانای کل

Information Expert
Information Expert

Information Expert

Expert

Expert Principle

سوال: اصل اساسی ای که بر اساس آن می توان مسیولیت ها را به اشیا اختصاص داد چیست؟

جواب: هر که بامش بیش، برفش بیشتر! به همین راحتی. مسیولیت را به کلاسی که بیشتریناطلاعات لازم برای انجام آن را دارد محول کنید.

این اصل عنوان میکند که ، برای واگذاری مسیولیت ها، به یک مسیولیت معین نگاه کنید، اطلاعات مورد نیاز برای انجام آن رو تعیین کنید و سپس تعیین کنید که آن اطلعات در کجا ذخیر همیشود.

این امر منجر به این میشود که مسیولیت، به کلاسی سپرده شود که بیشترین اطلاعات مورد نیاز برای انجام آن را دارد.



مثال:

بیایید برنامه Point of Sale (POS) را در نظر بگیریم:

مروری کوتاه بر برنامه POS.

  • درخواست مغازه، رستوران و ... که فروش را ثبت می کند.
  • هر فروش یک یا چند مورد از یک یا چند نوع محصول است و در تاریخ معینی اتفاق می افتد.
  • یک محصول دارای مشخصاتی شامل توضیحات، قیمت واحد، شناسه است.
  • این برنامه همچنین پرداخت هایی (مثلاً نقدی) مرتبط با فروش را ثبت می کند.
  • پرداخت مبلغ معینی معادل یا بیشتر از کل فروش است.

بیان مشکل: چه کسی مسئول دانستن مجموع کل فروش است؟

توسط Information Expert، ما باید به دنبال آن دسته از اشیا باشیم که اطلاعات مورد نیاز برای تعیین مجموع کل را دارند. در نتیجه کلاس Sale حاوی تمام اطلاعات مورد نیاز برای این کار است.

public class Sale { //... public double getTotal(){ double total = 0; for (SalesLineItem s : salesLineItem) { ProductSpecification prodspec = s.getProductSpecification(); total += s.getQuantity()*prodspec.getPrice(); } return total; } }
public class SalesLineItem { //... public double getSubTotal(){ return this.getQuantity() productSpecification.getPrice(); } }

فواید:

  • کپسوله سازی اطلاعات حفظ می شود زیرا اشیا از اطلاعات خود برای انجام وظایف استفاده می کنند. این معمولاً از اتصال کم (Low Coupling)پشتیبانی می کند که منجر به سیستم های قوی تر و قابل نگهداری می شود.
  • رفتار در بین طبقاتی که اطلاعات مورد نیاز را دارند توزیع می‌شود، بنابراین تعریف کلاسی «سبک»،درک و حفظ آن را آسان‌تر میکند است. انسجام بالا (High Cohesion)معمولاً پشتیبانی می شود.

برای مطالعه ی ادامه مطالب به لینک مراجعه کنید.

graspgrasp principlesinformation expertexpertexpert principle
شاید از این پست‌ها خوشتان بیاید