向对象动态添加方法

Add dynamically methods to an object

你能帮我找到解决问题的方法吗?

我有一个 class 代表一个实体(我会称之为 "Entity") 我想根据不同的标准向我的实体动态添加方法。

例如:

如果$_POST['TYPE'] == 'typeA',我想添加以下方法:

  • method1()
  • method2()
  • method3()
  • method4()

如果$_POST['MODE'] == 'modeA',我想添加以下方法:

  • method5()
  • method6()
  • method7()

问题是会有很多可能的方法,如果我将它们全部添加到我的 class,我恐怕我的 class 会变得太大。我也想避免每次出现新情况时编辑我的 class。

我首先考虑按案例设置 class,但我有太多案例(大约 5 个标准,每个标准有 6 或 7 个可能的不同值)所以大约有 50 或 60 个不同的案例。

那么最好的解决方案是什么?

我是否应该将所有可能的方法添加到我的 class?

我是否应该使用继承并创建所有可能类型的对象(Type1Mode1Entity、Type1Mode2Entity,...)?

你知道设计模式(装饰器?)吗?

为使用通用方法扩展抽象 class 的案例创建单独的 classes,然后使用工厂 DP 加载所需的 class