向对象动态添加方法


Add dynamically methods to an object

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

我有一个代表实体的类(我将其命名为"entity")我想根据不同的标准动态地向我的实体添加方法。

例如:

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

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

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

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

问题是会有很多可能的方法,如果我把它们都添加到我的类中,我担心我的类会变得太大。我还想避免每次出现新情况时都编辑我的类。

我最初想过按案例分类,但我有太多的案例(大约5个标准,每个标准有6或7个可能的不同值),所以大约有50或60个不同的案例。

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

我应该添加所有可能的方法到我的类吗?

我应该使用继承和创建所有可能的类型的对象(Type1Mode1Entity, Type1Mode2Entity,…)?

你知道这样做的设计模式(装饰器)吗?

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