قسمت سوم این مقاله را در اینجا بخوانید.
حل مشکل استفاده از Implementation به جای Interface
همانطور که در ۲ مرحله قبل اشاره کردیم ما در تعریف کلاس MarralDuck از اینترفیس اضافه نکردیم که باید این مشکل را حل بکنیم:
۱-ابتدا دو متد به کلاس Duck اضافه می کنیم:
۲-یک Type از کلاس Type ایجاد می کنیم:
۳-یک FlyBehavior دیگر ایجاد می کنیم:
۴-و در نهایت کد را به صورت زیر اجرا می کنیم:
۵-خروجی به صورت زیر در می آید:
دیاگرام کلاس ها به صورت کامل:
زمانیکه ما از دو کلاس را داخل یکدیگر می گذاریم از Composition استفاده کرده ایم.به جای ارث بری رفتار ها ، اردک های رفتارهای مورد نیازشان را با استفاده از Composition می گیرند.این یک تکنیک مهم است
نکته پایه طراحی ۳: استفاده از Compostion نسبت به ارث بری در اولویت است.زیرا همانطور که دیدیم استفاده از Composition سبب انعطاف پذیری میشود و ما در اینجا توانستیم در Run time رفتارها را تغییر دهیم.
Composition در بسیاری از Design Pattern ها استفاده شده است.
این فرآیندی که ما طی کردیم مربوط به الگوی طراحی Strategy بود و در حقیقت ما Strategy Design Pattern را با هم فرا گرفتیم.
نکاتی در مورد برنامه نویسی و برنامه نویسی شی گرا :
۱-برنامه نویسی شی گرا در حقیقت راه استفاده مجدد از کدهاست و باعث می شود که زمان برنامه نویسی کاهش پیدا کند.
۲-در برنامه نویسی زمان تعمیر و نگهداری و تغییر کد بیشتر از زمان Development اولیه می باشد و در حقیقت تلاش ما برای طراحی کد به صورتی که بتوان از آن استفاده مجدد کرد برای این است که در تعمیر و نگهداری و تغییرات بتوانیم زمان را کاهش دهیم.
پایان قسمت چهارم
منبع : Head First Design Pattern