Я думаю, что здесь композиция имеет наибольшее значение, однако я бы порекомендовал динамическую композицию поверх статической композиции, чтобы учесть анатомические аномалии (отсутствие конечностей и т. Д.)чисто виртуальный ...
public abstract class BodyPart
{
}
Вы можете добавить определенные типы частей тела:
public abstract class Limb : BodyPart
{
public float Length { get; set; }
public abstract void Move();
}
Если вам нужно, создайте подклассы для рук, ног и т. д.
public class Arm : Limb
{
public override void Move()
{
Debug.WriteLine("Arm is moving");
}
}
Наконец, вы можете разделить свое тело на подклассы для человека:
public class HumanBody : Body
{
//properties and methods specific to the human body
}
Собрав все это вместе, вы можете динамически создать надежный HumanBody:
HumanBody body = new HumanBody();
Arm leftArm = new Arm(){ Length=24F };
Arm rightArm = new Arm(){ Length=24F };
//create other parts
body.BodyParts.Add(new KeyValuePair<string, BodyPart>("LeftArm",leftArm));
body.BodyParts.Add(new KeyValuePair<string, BodyPart>("RightArm",rightArm));
//add other parts
Покаявляется очень гибким, очевидным недостатком является то, что вам придется делать изрядное количество заклинаний, если вы действительно хотите использовать любую из частей тела:
Arm leftArm = body.BodyParts["LeftArm"] as Arm;
leftArm.Move();
Неплохо для2 строки кода, но если вам нужно координировать движения, дополнительные накладные расходы могут быть слишком обременительными.
Это мой 2c.