过度继承问题解决思路

<?php
declare(strict_types=1);
ini_set('display_errors', 'On');
error_reporting(-1);

/**
 * A
 */
class A
{
    protected string $a;
}

/**
 * B
 */
class B extends A
{
    protected string $b;
}

/**
 * C
 */
class C extends B
{
    protected string $c;
}

/**
 * D  【警告:该类已过度继承(有三个父类)】
 */
class D extends C
{
    protected string $d;
}


//========== 总结 ==========//
// 1、虽然没有硬性标准,但是通常认为,一个类如果有三个或以上父类,那么该类就算是过度继承了。
// 2、过度继承会降低代码的可读性和可维护性,所以应该尽量避免过度继承。
// 3、解决过度继承问题的主要思路是使用组合代替继承,例如可以使用interface或trait把父类和子类的公共部分提取出来,
//    然后通过实现多个interface或使用多个trait来代替继承。
// 4、解决过度继承问题还可以通过设计模式来解决,这种设计模式称为组件模式。
//    在组件模式中,一个组件就是一个独立的类(没有继承关系),原来的各个子类也不需要继承组件类,而是作为一个独立的类,
//    原来的各个子类根据需要实现的功能选择有关的组件使用即可。

Copyright © 2024 码农人生. All Rights Reserved