ما هو التصميم الموجه للمجال؟
DDD هي منهجية لتطوير البرمجيات تركز على فهم المجال التجاري وتحليل البرمجيات حولها. وهي عن اللغة والحدود والأنماط.
مبادئ أساسية
حدود السياق
يحدد السياق المحدود حدودًا داخلها تطبيق فيها نموذج المجال. يمكن أن يعني نفس الكلمة شيءًا مختلفًا في سياقات مختلفة.
// سياق الطلب
class Order {
constructor(id, customerId, items, status) {
this.id = id;
this.customerId = customerId; // مرجع، وليس كائن كامل
this.items = items;
this.status = status;
}
}
// سياق المخزون
class StockItem {
constructor(productId, warehouse, quantity) {
this.productId = productId;
this.warehouse = warehouse;
this.quantity = quantity;
}
}المجموعات
المجموعة هي مجموعة من الكائنات المجالية يتم التعامل معها كوحدة واحدة للتعديلات البيانية. يعد الجذر المجموعة الوحيد للENTRY POINT للتعديلات.
class OrderAggregate {
constructor(order) {
this.order = order;
this.items = [];
}
addItem(product, quantity) {
const item = new OrderItem(product.id, quantity, product.price);
this.items.push(item);
this.order.total = this.items.reduce((sum, i) => sum + i.subtotal, 0);
}
}التموج بالحدث
تقنية تعاونية لاكتشاف أحداث المجال، الأوامر، والمجموعات. قم بورشة عمل مع الخبراء المجالين والمتطوّعين معًا.
- أضف ملصقات للاحتفاظ بالحدث المجالي (الأصفر)
- حدد الأوامر التي تؤدي إلى أحداث (الأزرق)
- جمّع أحداث ذات صلة في المجموعات (الأحمر)
- حدد السياقات المحدودة حول النمط
الاستنتاج
DDD ليست عن الأنماط - هي عن فهم المجال. استثمر الوقت في اللغة الشائعة والمحاكاة المجالية قبل كتابة الكود.