我有一系列的类都有不同的属性,每个类都有一个ID(每种类型不是每个实例)。如何创建一个有条件定义类型的对象?
考虑以下几点:
public class TestEntity : EntityBase {
public override ushort ID { get; } = 1;
public override void something() { do_something(); }
}
public class OtherEntity : EntityBase {
public override ushort ID { get; } = 2;
public override void something() { something_else(); }
}
读数据时我只有一个ushort
:
ushort EntityId = BitConverter.ToUInt16(data.GetRange(CURRENT_POSITION + TILE_ENTITY_ID_OFFSET, TILE_ENTITY_ID_LENGTH).ToArray().Reverse().ToArray(), 0);
如何使用的EntityId
创造价值基于其价值不同类型的对象?使用if
或switch
语句不是一个选项,因为将会有200多种类型。
https://en.wikipedia.org/wiki/Factory_method_pattern –
@Matthew同工厂模式,调用者知道他们想要实例化的东西。正如您在C#代码示例中看到的那样,工厂仍然需要一个开关。 – CodeCaster
这是做工厂的一种方式。还有很多其他的。 –