塞缪尔(Samuel),是否可以将每种策略所包含的参数封装到一个公共类中,然后扩展该公共Parameter类以添加某些策略特别需要的更多行为?
例如
StrategyParameter //Base strategy parameter that most of the strategies need
^
|
|
SpecialStrategyParameter // will be used for strategies that need more parameter
然后,定义策略层次结构,如下所示:
Interface MyStrategy {
void myStrategyMethod(StrategyParameter parameter);
}
class MyNormalStrategy extends MyStrategy {
void myStrategyMethod(StrategyParameter parameter) {
//implement the logic here
}
}
将上述策略称为: myNormalStrategyInstance.myStrategyMethod(strategyParameter);
class MySpecializedStrategy extends MyStrategy {
void myStrategyMethod(StrategyParameter parameter) {
//implement the logic here
}
}
通过传递SpecialStrategyParameter
实例来调用上述策略,例如:mySpecializedStrategy.myStrategyMethod(specialStrategyParameter);
如果不清楚,请更新。乐于解释/澄清。