تكرار السؤال: …
الإجابة المختصرة
التصنيفات هي: الإنشائية (Creational) لإدارة إنشاء الكائنات، الهيكلية (Structural) لتركيب وتنظيم العلاقات بين الفئات، والسلوكية (Behavioral) لتنظيم التواصل وتوزيع المسؤوليات.
الشرح
أنماط التصميم هي حلول مجربة وموثقة لمشاكل هندسية شائعة. الأنماط الإنشائية (مثل Factory و Singleton) تفصل عملية إنشاء الكائنات عن استخدامها. الأنماط الهيكلية (مثل Adapter و Decorator) توضح كيفية دمج الكائنات المختلفة لتكوين هياكل أكبر وأكثر مرونة. والأنماط السلوكية (مثل Strategy و Observer) تحدد كيفية تدفق البيانات والرسائل وتوزيع الأدوار بين الكائنات بسلاسة.
مثال بالكود
// Creational — Factory: callers do not know which class gets created
function createLogger(env: string): Logger {
return env === "prod" ? new CloudLogger() : new ConsoleLogger()
}
// Structural — Adapter: make an incompatible interface fit the one we expect
class LegacyPaymentAdapter implements PaymentGateway {
constructor(private legacy: OldGateway) {}
pay(amount: number) { return this.legacy.makePayment(Math.round(amount * 100)) }
}
// Behavioral — Strategy: swap an algorithm at runtime
class Checkout {
constructor(private shipping: (weightKg: number) => number) {}
total(weightKg: number) { return this.shipping(weightKg) }
}
new Checkout((w) => w * 2).total(3) // 6أخطاء شائعة
- التعامل مع أنماط التصميم كقوالب كود جاهزة يتم نسخها حرفياً بدلاً من فهم المشكلة المعمارية التي تعالجها.