Quando la classe di contesto può accettare una strategia nulla, c'è un altro modo per farlo senza verificare se è nullo?
Questa è considerata una buona implementazione della progettazione della strategia?
class MainApp{
static void Main(){
Context context = new Context();
while(true){
Strategy strategy = createConcreteStrategy(Console.ReadLine());
context.setStrategy(strategy);
context.run();
}
}
static void createConcreteStrategy(string input){
if( input == "strategyA" ){
return new StrategyA();
}
if( input == "strategyB" ){
return new StrategyB();
}
return null;
}
}
abstract class Strategy { public abstract void doSomething(); }
class Context{
Strategy strategy;
ClassX x;
public Context(){}
public void setStrategy(Strategy strategy){
this.strategy = strategy;
}
public void run(){
if( strategy != null ){
data = strategy.doSomething();
x.setData(data);
}
}
}