【发布时间】:2019-11-13 11:48:52
【问题描述】:
我和一个朋友讨论了如何用两个包实现观察者模式。
这是一个虚构的例子: 包“Gaming”包含“Battlefield”类。 包“Players”包含“IPlayer”(以及该接口的各种实现)。
现在我们想让战场观察玩家。为此,我们创建了一个接口“IPlayerObserver”和“IOberservablePlayer”。 IPlayer 继承 IOberservablePlayer。
我们应该把“IPlayerObserver”放在哪个包里?
// Package: Players
public interface IPlayer extends IOberservablePlayer {}
// Package: Gaming
public class Battlefield implements IPlayerObserver {}
// Which package?
public interface IPlayerObserver {
void notify(IPlayer player);
}
public interface IOberservablePlayer {
void addObserver(IPlayerObserver observer);
}
感谢您提供的所有答案。
【问题讨论】:
-
你的界面名称告诉你:玩家..
-
如果您将 players 和 gaming 制作成单独的模块,您肯定会注意到。现在,如果你添加第三个模块也想通知玩家,你宁愿依赖 player 而不是 gaming。