آموزش طراحی دامنه محور Domain Driven Design و ریفکتور کردن یک Anemic Domain Model

تعداد ویدئو 60
زمان دوره 03:30:54
مترجم مرتضی گیتی
دوبلر مرتضی گیتی
سایت منتشر کننده پلورال سایت

آموزش طراحی دامنه محور Domain Driven Design و ریفکتور کردن یک Anemic Domain Model یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی آموزش Domain Driven Design و ریفکتور کردن یک Anemic Domain Model است که با نام اصلی Refactoring from Anemic Domain Model Towards a Rich One از شرکت Pluralsight منتشر شده است.

Domain Driven Design چیست؟

طراحی دامنه محور یا همان Domain Driven Design در واقع درک نیازهای واقعی کسب و کار مشتری است. ما باید درباره دامنه های مختلف مانند بانکداری، مخابرات، زنجیره تامین، مراقبت های بهداشتی و… دانش داشته باشیم. بنابراین در اینجا دامنه به معنی دانش کسب و کار درباره صنعت خاص است. به طور مشابه طراحی دامنه محور تمرکز بیشتری نسبت به نیازهای کسب و کار دارد نه به تکنولوژی. برای شروع نوشتن یک سیستم، باید بدانیم که مشتری چه چیزی را مد نظر دارد، در حین فاز اولیه هیچگاه درباره برنامه نویسی و معماری آن فکر نمیکنید. هدف اصلی شما درک تمام شرایط کسب و کار مشتری و چگونگی مدل دامنه مورد نیاز او است.

بنابراین چیزی که ما به دنبال آن هستیم بحث با مشتری درباره نیازهای کسب و کار او است. Domain Driven Design صرفا بر اساس این فرضیات برای ترسیم کردن نیازهای کسب و کار در مدل دامنه است. طراحی دامنه محور همه چیز درباره چگونگی طراحی مدل دامنه شماست. به این معنا که هر کلاس دامنه باید یک رابطه مستقیم با  آنچه که در دامنه کسب و کار است داشته باشد.

 

Refactoring-from-Anemic-Domain-Model-Towards-a-Rich-One-snapshot

Anemic Domain Model چیست؟

در Domain Driven Design واژه ی Anemic Domain Model به Domain Model ی گفته می‌ شود که در آن Domain Object ها حاوی مقدار ناچیزی Business Logic باشند. Business Logic ی که شامل Validation، Business Rule و موارد دیگر می باشد. این واژه اولین بار توسط آقای Martin Fowler عنوان شد که این روش را یک ضد الگو (Anti-pattern) می دانست. بر اساس حرف آقای Martin Fowler “مشکل اصلی این نوع طراحی و این ضد الگو این است که دقیقاً متضاد ایده ی اصلی طراحی شی گرا است، که بر اساس آن Object ها باید حاوی Data و Behavior باشند.” آقای Martin Fowler بر این باور است که Anemic Domain Model یک سبک از طراحی Procedural است. چیزی که متضاد با طراحی شی گرا است. در یک Anemic Domain Model کلاس‌ های جداگانه‌ ای برای در بر داشتن Business Logic پیاده سازی شده اند که State مربوط به Domain Object ها را تغییر می دهند. آقای Martin Fowler نام این کلاس های جداگانه را Transaction Script گذاشته است. دقت کنید که این نوع طراحی در برنامه های جاوا معمول و مرسوم است. در برنامه های دات نت و در معماری برنامه های Three-Layered Services Application نیز استفاده می شوند. در این نوع معماری از برنامه های دات نت به اینگونه کلاس های جداگانه Business Entity می گوییم.

سرفصل مطالب آموزش ویدئویی Domain Driven Design و ریفکتور کردن یک Anemic Domain Model

فصل اول: مقدمه ی بسته ی آموزشی

  • مقدمه ی بسته ی آموزشی

فصل دوم: مقدمه

  • شروع به کار
  • بررسی Anemic Domain Model
  • بررسی Encapsulation
  • بررسی رابطه ی Anemic Domain Model و Encapsulation
  • کاربرد Anemic Domain Model
  • بررسی رابطه ی Anemic Domain Model و Functional Programming

فصل سوم: معرفی یک Anemic Domain Model

  • مقدمه
  • معرفی یک Anemic Domain Model
  • معرفی کد برنامه
  • بررسی معایب کد برنامه
  • جمع بندی

فصل چهارم: Decouple کردن یک Domain Model از Data Contract ها

  • مقدمه
  • معرفی Domain Model و Data Contract ها
  • استخراج کردن Output Data Contract ها
  • مشخص کردن یک حفره ی امنیتی
  • استخراج کردن Input Data Contract ها
  • جمع بندی استخراج کردن Input Data Contract ها
  • جمع بندی

فصل پنجم: استفاده کردن از Value Object ها به عنوان اجزای تشکیل دهنده ی Domain Model

  • مقدمه
  • اهمیت استفاده کردن از Value Object ها
  • مشخص کردن Value Object ها
  • جمع بندی مشخص کردن Value Object ها
  • جمع کردن Validation Rule ها در یک مکان تک
  • جمع بندی جمع کردن Validation Rule ها در یک مکان تک
  • تنظیم کردن Persistence
  • معرفی یک Value Object به نام Dollars
  • جمع بندی معرفی یک Value Object به نام Dollars
  • معرفی یک Value Object به نام Expiration Date
  • جمع بندی

فصل ششم: منتقل کردن Logic از سرویس ها به Domain Class ها

  • مقدمه
  • مرور کد
  • ریفکتور کردن Customer و Constructor آن
  • ریفکتور کردن Customer و Collection آن
  • جمع بندی ریفکتور کردن Constructor و Collection مربوط به Customer
  • ریفکتور کردن Customer و Status آن
  • جمع بندی ریفکتور کردن Customer و Status آن
  • ریفکتور کردن Purchased Movie
  • منتقل کردن Logic به Promote Customer
  • منتقل کردن Logic از سرویس به Entity ها
  • جمع بندی منتقل کردن Logic از سرویس به Entity ها
  • ریفکتور کردن Movie
  • جمع بندی

فصل هفتم: سازماندهی کردن Application Services Layer

  • مقدمه
  • بررسی Application Services Layer
  • بررسی Repository ها و Unit of Work
  • جمع بندی بررسی Repository ها و Unit of Work
  • کار کردن با Exception ها
  • معرفی کردن الگوی Envelope
  • ساده کردن Controller
  • تغییر دادن ساختار پروژه
  • جمع بندی

فصل هشتم: Best Practice های Domain Modeling

  • مقدمه
  • بررسی اصلی YAGNI
  • به اشتراک گذاری Domain Logic بین پروژه ها
  • انجام Encapsulation در Domain Model
  • انجام Domain Model Isolation
  • جمع بندی
  • لیست منابع
  • جمع بندی بسته ی آموزشی

نقد و بررسی‌ها

هیچ دیدگاهی برای این محصول نوشته نشده است.

اولین کسی باشید که دیدگاهی می نویسد “آموزش طراحی دامنه محور Domain Driven Design و ریفکتور کردن یک Anemic Domain Model”

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

دسته های محصولات

افزودن به سبد خرید