アプリケーションで if を排除したいのですが、壁にぶち当たりました。これが私のコードです。私が直面している問題は、辞書を使用して切り替えを行うという考えを取り入れたことですが、この場合、if は 2 つの異なる変数、加重変数と蜂に依存します (これらは 1 つの変数に結合できません)。だからもともとそうだった
if(weighted)
return WeightedCalculator;
else if (bee)
return BeeCalculator;
else
return DefaultCalculator;
だから私はそれを次のように変更しました.ifsを排除しますが、気分が悪いです. 辞書はifが単一の変数にある場合を対象としていることは知っていますが、2つ以上の変数がある場合はそれを使用する方法が必要だと感じています。どうすればifをきれいに排除できるかについてのアイデア。これがこの「パターン」へのリンクです
http://joelabrahamsson.com/invoking-methods-based-on-a-parameter-without-if-else-statements-in-c/
public class CalculateDayCountFractionFactory : ICalculateDayCountFractionFactory
{
private static readonly Dictionary<string, Func<ICalculateDayCount>> _dayCountCalculators = new Dictionary<string, Func<ICalculateDayCount>>
{
{"weighted", new WeightedDayCountCalculator()},
{"bee", new BeeDayCountCalculator()}
};
public ICalculateDayCount Create(bool weighted, bool bee)
{
var key = weighted
? "weighted"
: (bee
? "bee"
: "");
return _dayCountCalculators.ContainsKey(key)
? _dayCountCalculators[key]()
: DefaultDayCountCalculator();
}
}