ada*_*o94 10 c# design-patterns pattern-matching conditional-statements
我正在为我的问题寻找一个好的模式.
我有一些bool变量:
condition1,condition2,condition3.
我也有一些动作,在课堂内的不同地方调用:
动作1,动作2,ACTION3
当条件1和2为真时,调用Action1.当条件2和3为真时,将调用action2.当所有条件都为真时,将调用操作3.
当然,这只是问题的简化.我不想在每个地方使用if else.这非常不清楚.
我一直在考虑状态,但我想这不是解决这个问题的最佳方法.
Sea*_*ean 12
一种选择是将条件逻辑包装在基类中,然后从中派生以执行实际操作.这是Command模式和(我认为)策略模式的变体:
class ActionState
{
public bool Condition1{get;set;}
public bool Condition2{get;set;}
public bool Condition3{get;set;}
}
abstract class ActionDispatcher
{
protected abstract void ExecuteAction1();
protected abstract void ExecuteAction2();
protected abstract void ExecuteAction2();
public void Action1(ActionState state)
{
if(state.Condition1 && state.Condition2)
{
ExecuteAction1();
}
}
public void Action2(ActionState state)
{
if(state.Condition2 && state.Condition3)
{
ExecuteAction2();
}
}
public void Action3(ActionState state)
{
if(state.Condition1 && state.Condition2 && state.Condition3)
{
ExecuteAction3();
}
}
public void AllActions(ActionState state)
{
// Execute all actions depending on the state
Action1(state);
Action2(state);
Action3(state);
}
}
Run Code Online (Sandbox Code Playgroud)