الدرس 6: التركيب قبل الوراثة
يبدو public class Car : Engine اختصاراً مريحاً — إلى أن تكتشف أن كل دالة في المحرك تتسرب إلى السيارة، وأن كل تغيير في المحرك يكسر السيارة، وأن سيارة بنوعين من المحركات تصبح مستحيلة. في هذا الدرس نستبدل الوراثة بحقل: ستمسك السيارة محركاً بدلاً من أن تكون محركاً — فنكسب المرونة دون هرمية هشة.
التركيب أشبه بصندوق أدوات: بدلاً من أن يولد المرء 'رجلاً-مطرقة'، يمسك المحترف مطرقة ويبدّلها عند الحاجة. أما الوراثة فتلحم المطرقة باليد إلى الأبد.
- التركيب قبل الوراثة
- عندما تكون العلاقة الحقيقية has-a، امسك الكائن كحقل خاص (private) وفوّض إليه — بدلاً من الوراثة وجرّ هرمية هشة وواجهة API متسرّبة.
- علاقة 'يملك' (has-a)
- علاقة يمسك فيها كائن كائناً آخر كحقل ويستخدمه — على عكس is-a، حيث يرث صف ويدّعي أنه نوع من أساسه.