رفتن به محتوای اصلی
برنامه‌سازی پیشرفته با پایتون درس‌نامهٔ آزاد
مفهوم متوسط ۸ دقیقه

ترکیب در برابر وراثت

چه‌وقت ترکیب بهتر از وراثت است: قاعدهٔ هست/دارد، تزریق وابستگی و انعطاف تعویض رفتار.

class Engine:
    def start(self): return "موتور روشن شد."

class Car:  # ماشین «یک موتور دارد» — ترکیب
    def __init__(self, engine=None):
        self.engine = engine or Engine()
    def start(self):
        return self.engine.start() + " ماشین آماده است."

ترکیب سه برتری دارد: (۱) رفتار را در زمان اجرا می‌شود عوض کرد (موتور برقی بده)، (۲) سلسله‌مراتب عمیق و شکننده نمی‌سازد، (۳) تست با موتورِ بدلی ساده است (تزریق وابستگی از همین‌جا می‌آید). وراثت را برای «هستِ» واقعی و پایدار نگه دار (سگ یک حیوان است و همیشه خواهد بود).

پیش‌نیازها

مطالب مرتبط

از همین بخش و با برچسب‌های مشترک

این مطلب را خواندید؟ آن را علامت بزنید تا پیشرفت شما روی همین دستگاه ذخیره شود.

وضعیت پیشرفت برای ترکیب در برابر وراثت