سلام
فرض کنید ما یک کلاس به شکل زیر در ورژن ۱.۰ برنامه داریم.
class ClassTest{
public function methodTest1(){
codeA;
codeB;
codeC;
codeD;
}
}
حالا در ورژن ۱.۱ طبق امکاناتی که از ما خواسته شده باید تغییراتی در متدهای کلاس اعمال کنید که بتونیم امکانات جدید پیاده سازی کنیم
class ClassTest{
public function methodTest1(){
codeA;
codeH;
codeM;
codeC;
codeP;
}
}
این جا با تغییر متدهای کلاس ما عملا اصل دوم SOLID که میگه (open for extension closed for modification) زیر پا گذاشتیم
این جا باید چطوری نرم افزار توسعه بدیم طوریکه این قانون نقض نشده (سورس کد قبلی ویرایش نشه)
آیا دیزاین پترن decorator که functionality اضافه میکنه بدون اینکه کلاس تغییر بده راه حل این مشکل هست؟