什么是行为类额外数据的最佳设计?

时间:2017-11-26 07:04:44

标签: php design-patterns orm

我有一个游戏,玩家可以完成一些任务。

我已将任务的行为部分分离到其ORM部分。 最终,任务的副本将保存在播放器文档的某个位置(对于此特定问题的位置并不重要)。

问题是,我不知道在哪里将我发送给客户端的额外信息放在行为本身不需要的地方,但是需要向玩家展示有关任务本身的信息。

这是我的任务界面:

C

这是我的抽象任务:

interface ITask
{
    /**
     * @param Player $player
     */
    public function init(Player $player);

    /**
     * @param PlayerAction $action
     */
    public function progress(PlayerAction $action);

    public function reset();

    /**
     * @return bool
     */
    public function isComplete();
}

现在我需要决定如何放置额外数据,例如描述,标题,主题等......

  1. 我想到了两个选项:我可以把它放在基本任务上 本身,但如果我不需要它会发生什么?我离开了 空白?对我来说感觉错了。
  2. 我可以创建一个包装器 将承担任务的类,但随后我将需要始终 调用包装器来完成任务,感觉有点儿 错。
  3. 寻找其他建议。

1 个答案:

答案 0 :(得分:0)

您应该从TaskBase继承CustomTask。

如果您对继承有限制,请将其他字段封装到名为TaskAdditionalInfoBase的类中并与TaskBase关联。

然后,各种类可以继承TaskAdditionalInfoBase,以向该任务提供自定义附加信息。