<?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