Design patterns 策略模式中的可变参数
有时在使用策略模式时,我发现一些算法实现不需要相同的参数列表 比如说Design patterns 策略模式中的可变参数,design-patterns,strategy-pattern,Design Patterns,Strategy Pattern,有时在使用策略模式时,我发现一些算法实现不需要相同的参数列表 比如说 public interface Strategy{ public void algorithm(int num); } public class StrategyImpl1 implements Strategy{ public void algorithm(int num){ //num is needed in this implementation to ru
public interface Strategy{
public void algorithm(int num);
}
public class StrategyImpl1 implements Strategy{
public void algorithm(int num){
//num is needed in this implementation to run algorithm
}
}
public class StrategyImpl2 implements Strategy{
public void algorithm(int num){
//num is not needed in this implementation to run algorithm but because im using same
strategy interface I need to pass in parameter
}
}
我是否应该使用不同的设计模式?这通常是可以接受的,尽管如果有一些参数仅由某些实现需要,那么将这些参数提供给实现的构造函数(即,将它们排除在策略接口之外)可能更有意义,尽管在你的情况下这可能不是一个选择 另外,另一个选项是创建一个
参数
类,并让您的策略方法只接受其中一个参数。然后,此类可以为各种参数(即int num
)提供getter,如果特定实现不需要使用num
,那么它就不会调用parameters.getNum()
。这还为您提供了添加新参数的灵活性,而无需更改任何现有的策略实现或接口
话虽如此,像Parameters
这样的类让我感觉在其他地方出现了抽象失败,尽管有时你只是需要让它工作起来