برنامه نویسی

حرکت از مدل های ORM به مصالح طراحی محور دامنه

من قصد دارم بیانیه بزرگی را از دروازه بیان کنم. DDD به ORM احتیاج ندارد.
من حتی واضح تر خواهم شد ، Orm به DDD آسیب می رساند.

کل طرح محور دامنه (DDD) چیست؟

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

class Order {
    public private(set) int $id;
    public private(set) Customer $customer;
    public private(set) Address $address
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در این مثال ، کل ریشه است Order موجودیت یک نهاد شیئی است که قابل شناسایی است. رایج ترین مورد استفاده از یک ویژگی شناسه است.

در $customer همچنین یک موجود است.

در $address یک شیء ارزش است. یک شیء مقدار شیء است که حاوی داده های معتبر است ، اما قابل شناسایی نیست.

ارزش شیء عمیق شیرجه

تمایز بین یک نهاد و یک شیء ارزش جایی است که یک ORM به DDD آسیب می رساند.

برای یک ORM Address یا یک موجودیت یا قسمت به عنوان بخشی از آن است Orderبشر
هنگامی که شما یک کاربر با تجربه ORM هستید بیشتر اوقات شما برای یک رابطه انتخاب می کنید و این به معنای یک نهاد جدید است.

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

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

ایجاد تمایز بین یک نهاد و یک شیء با ارزش ، شما را وادار می کند تا در مورد ذخیره داده ها سخت تر فکر کنید. و این یک چیز خوب است.
همانطور که قبلاً ذکر کردم یک شیء ارزش می تواند به عنوان بخشی از قسمت ها باشد Order موجودیت اما با زمینه های JSON که در بسیاری از راه حل های پایگاه داده (همه؟) وجود دارد ، این همچنین می تواند یک زمینه باشد که بخشی از آن باشد Order موجودیت
و هنوز هم مواردی وجود دارد که یک شیء با ارزش به عنوان یک موجودیت ORM ذخیره می شود.
همه اینها به برنامه بستگی دارد.

راه رو به جلو

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

سعی کنید استفاده از ORM را از بین ببرید ، این امر از سردرگمی بین اشخاص ORM و نهادهای DDD جلوگیری می کند.

برای یک طراحی محور دامنه معمول است که از مخازن برای برقراری ارتباط بین دامنه ها و زیرساخت ها استفاده شود.
دامنه (ها) رابط را ارائه می دهند و زیرساخت ها از بخشی از برنامه که عوارض جانبی دارد ، مراقبت می کند.

ddding مبارک!

نوشته های مشابه

دیدگاهتان را بنویسید

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

دکمه بازگشت به بالا