向对象动态添加方法
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
你能帮我找到解决问题的方法吗?
我有一个 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