وراثت سفت و سخت خود را به نمایندگان انعطاف پذیر تبدیل کنید
TL ؛ DR: سلسله مراتب وراثت محدود کننده را با نمایندگی شیء انعطاف پذیر جایگزین کنید
مشکلات مورد توجه
- نقض تعویض لیسکوف
- سلسله مراتب طبقه سفت
- وابستگی های پنهان
- جفت شدن
- قابلیت استفاده مجدد محدود
- نقض اصل مسئولیت واحد
https://hackernoon.com/how-to-find-te-stinky-parts-of-your-code-part-iii–t7h3zkv
https://hackernoon.com/how-to-find-te-stinky-parts-of-your-code-part-xiv
https://hackernoon.com/how-find-te-tinky-parts-of-your-code-part-vii-8dk31x0
https://hackernoon.com/how-to-find-te-stinky-parts-of-your-code-part-xxv
مراحل
- یک میدان موقت در زیر کلاس برای SuperClass ایجاد کنید.
- روش های زیر کلاس را برای تفویض تماس ها به روز کنید.
- روش های نمایندگی را برای رفتار ارثی اضافه کنید.
- وراثت را حذف کرده و ایجاد شی را به روز کنید.
کد نمونه
قبل
class Chatbot {
public void respond(String question) {
// Here is the logic to answer a question
}
}
class Robot extends Chatbot {
// The Physical Robot inherits the logic
// to answer questions
// and adds physical behavior
public void move() {
System.out.println("Moving...");
}
public void grab() {
System.out.println("Grabbing object...");
}
}