我想编写没有大量开关、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/