假设我正在创建一个体育游戏,在这个游戏中玩家可以扮演各种位置,进攻,防守等。所以我首先创建一个基类:
public abstract class Position
{
public abstract string Name
{
get;
}
}
和子类...
public class Defender : Position
{
public override string Name
{
get { return "Defender"; }
}
}
等等。这一切都很好。
但现在我需要一个函数来创建这些对象。我需要按位置创建功能。因此,一种可能的解决方案是创建所有位置的枚举并将此值传递给打开枚举并返回适当对象的函数。但这会触发我的代码气味警报。这个灵魂将类、枚举和函数内的开关联系在一起:
public static Position GetByType(Types position)
{
switch(position)
{
case Types.Defender:
return new Defender();
... and further terrible code
我应该看什么解决方案?这是哪种设计模式?