首页 > 解决方案 > 如何将具有多个行为的类与其他类相关联?

问题描述

当与游戏类相关联时,我有一些对象同时需要两种类型的行为。最好的方法是如何做到这一点?我在这里没有看到任何 GoF 模式可以提供帮助,但也许我只是大脑超负荷。

interface Actor {}

class Man implements Actor {}

class Woman implements Actor {}

class Game {
    private Map<Actor> actors;
}

如何在此代码中包含 Player、Referee 或 LineJudge 行为?

例子:

游戏 1,演员 1 女人和裁判,演员 2 女人和球员

游戏 2,演员 1 女人和玩家,演员 2 男人和玩家

游戏 3,演员 1 男女球员,演员 2 男子和裁判,演员 3 女子和 LineJudge

...

标签: oopdesign-patternsumlclass-diagram

解决方案


有几种可能的解决方案。我将给出我认为最有可能符合您要求的选项,但还有更多可能的解决方案。最适合您的情况取决于您需要实现的确切功能。

Game 中的一个集合,Actor 中的两个属性

您可以定义具有两个属性的类 Actor,一个是 Person 类型,可以是 Man 或 Woman,另一个是 Participant 类型,可以是 Player、Referee 或 LineJudge。

类诊断1

游戏中的三个集合

您可以在 Game 类中定义三个 Actor 集合,而不是一个,一个 Actor 在游戏中扮演的每个角色。好吧,如果只有一个裁判,那就不是真正的收藏。

类诊断2


推荐阅读