假设我们的应用程序中有几个操作。因此,我们创建一个AbstractAction
and,例如,ActionMove
它将继承AbstractAction
.
class AbstractAction
{
/* stuff common for all actions */
public ActionType actionType;
public AbstractAction(Unit owner)
{
this.owner = owner;
}
}
class ActionMove : AbstractAction
{
public ActionMove(Unit owner, Vector3 destination) : base(owner)
{
/**/
}
}
现在,我和我的同事发生了争执。他认为actionType
应该在ActionMove
构造函数内部赋值:
public ActionMove(Unit owner, Vector3 destination) : base(owner)
{
actionType = ActionType.Move;
/**/
}
我认为AbstractAction
构造函数应该设置派生类构造函数提供的动作类型:
public AbstractAction(ActionType actionType, Unit owner)
{
this.actionType = actionType;
this.owner = owner;
}
public ActionMove(Unit owner, Vector3 destination) : base(ActionType.Move, owner)
{
/**/
}
他说我的变种不好,尽管他说不出原因。我不能说它很好,它只是觉得适合我。那么,你能告诉我哪种方式更好,为什么?或者也许有第三种方式?