C# 设计模式 - 如何根据高度可配置的用户选择编写代码

标签 c# design-patterns

我想编写没有大量开关、if/else 和其他基于用户输入执行逻辑的典型语句的代码。

例如,假设我有一个要组装并调用 Car.Run() 的 Car 类。更重要的是,对于轮胎,我可以根据用户输入选择 4 种不同的轮胎类别。

对于我不知道的体型,假设我有 10 个体型类别可供选择来构建我的汽车对象,等等。

当此示例放大 1000 倍时使用的最佳模式是什么,以及可配置参数的数量。

甚至有一个模式吗?我查看了工厂模式和抽象工厂模式,它们不太符合这个要求,尽管看起来应该如此。

最佳答案

我不认为工厂模式在这里会被疏忽。这就是我要设置的方式。我看不出如何摆脱基于 switch/if 的逻辑,因为从根本上说,您的用户正在做出选择。

public class Car {
   public Engine { get; set; }
   //more properties here
}

public class EngineFactory {
  public Engine CreateEngine(EngineType type {
     switch (type) {
        case Big:
           return new BigEngine();
        case Small:
           return new SmallEngine();
     }
  }   
}

public class Engine {

}

public class BigEngine : Engine {

}

public class SmallEngine : Engine {

}

public class CarCreator {
   public _engineFactory = new EngineFactory();
   //more factories

   public Car Create() {
    Car car = new Car();

    car.Engine = _engineFactory.CreateEngine(ddlEngineType.SelectedValue);
    //more setup to follow

    return car;
   }
}

关于C# 设计模式 - 如何根据高度可配置的用户选择编写代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1779397/

相关文章:

c# - 原子动画——哪种技术

c# - 在特定时间从数据库执行事件的最佳方法

c# - 使用 HTML 按钮调用方法 ASP .NET

java - 包装外观模式

java - 单例模式 : Using Enum Version

c# - 参数化 SqlCommand - 指定 SqlDbType 的优势?

c# - WPF:控件失去其绑定(bind)

java - 我可以使用哪种设计模式来提供创建 "pre-configured"UI 组件的多种方法

c# - 如何从 ViewModel 访问 View 控件?

c# - 关于构建领域驱动设计命名空间的一些问题