شماره تماس 09336863931 | 09178169907 پست الکترونیک provid.ir@gmail.com

ایجاد اشیا با روش های برتر در Domain Driven Design #4

مقاله ی ایجاد اشیا با روش های برتر در Domain Driven Design را در این قسمت از وبسایت آموزش برنامه نویسی پرووید به شما تقدیم می کنیم.

ایجاد اشیا با روش های برتر در Domain Driven Design #4

نکته‌ای که در اینجا باید به آن اشاره کنیم این است که تمامی کلاس ها نیاز به پروپرتی IsSaveable ندارند. در Domain Driven Design یک شی که قابلیت به روز رسانی را دارد یا یک Aggregate Root است یا یا یک عضو از دقیقا یک Aggregate است. کلاس هایی که Aggregate Root هستند باید پروپرتی های Public ی شبیه IsSaveable را داشته باشند در صورتی که کلاس‌هایی که Aggregate Root نیستند نیازی به اینجور Property ها ندارند. با این وجود ممکن است کلاس هایی که Aggregate Root نیستند این Property ها را به صورت Private تعریف کنند تا بتوانند توسط Aggregate Root برای انجام Validation استفاده شوند.

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

از شما دعوت می کنیم از بسته ی آموزش کاربردی طراحی نرم افزار Domain Driven Design دیدن کنید.

بسته ی آموزش اصول طراحی نرم افزار Domain Driven Design

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

پس از ایجاد هرگونه تغییری بر روی تجمع SalesOrder ما باید این شی را به یک کلاس Repository بفرستیم و آن کلاس مسئولیت ذخیره‌سازی SalesOrder را به عهده بگیرد. اگر من مسئول نوشتن این کلاس Repository بودم حتما برای ذخیره کردن یک Aggregate از IsSaveable بر روی Aggregate Root استفاده می کردم. من از این Property برای تشخیص این که مجاز به ذخیره سازی آن Aggregate هستم یا نه بهره می برم. در واقع به عنوان یک طراح من می توانم یک اینترفیس را تشکیل دهم تا تمامی نقاط مشترک از جمله پروپرتی هایی که درون تمامی Aggregate Root ها مشترک هستند در درون این اینترفیس قرار بگیرند. یکی از این Property ها IsSaveable میباشد که در درون یک اینترفیس با نام IAggregateRoot تعریف شده و تمامی Aggregate های درون برنامه باید این اینترفیس را پیاده سازی کنند. تعریف این اینترفیس در زبان ویژوال بیسیک در شکل زیر آمده است.

Public Interface IAggregateRoot
  Public ReadOnly Property IsSaveable As Boolean
End Interface

نظر بدهید

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

CLOSE
CLOSE