我正在寻找一个很好的模式为我的问题.
我有一些bool变量:
条件1,条件2,条件3.
另外我有一些动作,它们在类里面的不同的地方被调用:
动作1,动作2,ACTION3
当条件1和2为真时调用Action1.
当条件2和3为真时,调用action2.
当所有条件都为真时,调用Action 3.
当然这只是一个简单的问题.我不想在每个地方都使用if else.这是非常不清楚的.
我一直在想国家,但我猜这不是最好的解决方案.
解决方法
一个选项是将条件逻辑包装在基类中,然后从其派生以执行实际操作.这是
Command模式的变化(我认为)
Strategy模式:
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); } }