加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#,模式 – 很多条件

发布时间:2020-12-15 06:32:49 所属栏目:百科 来源:网络整理
导读:我正在寻找一个很好的模式为我的问题. 我有一些bool变量: 条件1,条件2,条件3. 另外我有一些动作,它们在类里面的不同的地方被调用: 动作1,动作2,ACTION3 当条件1和2为真时调用Action1. 当条件2和3为真时,调用action2. 当所有条件都为真时,调用Action 3. 当
我正在寻找一个很好的模式为我的问题.

我有一些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);
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读