در اینجا به همین دلیل است که باید وراثت را با هیئت جایگزین کنید

وراثت سفت و سخت خود را به نمایندگان انعطاف پذیر تبدیل کنید

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

مراحل

  1. یک میدان موقت در زیر کلاس برای SuperClass ایجاد کنید.
  2. روش های زیر کلاس را برای تفویض تماس ها به روز کنید.
  3. روش های نمایندگی را برای رفتار ارثی اضافه کنید.
  4. وراثت را حذف کرده و ایجاد شی را به روز کنید.

کد نمونه

قبل

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...");
    }
}

Source link