【发布时间】:2020-11-27 09:55:29
【问题描述】:
我有一个班级 Game,现在我需要将玩家 (IPlayer) 添加到游戏中。我正在考虑两种情况:
- 第一种方法
IPlayer AddPlayer()
在这种情况下,调用者不必担心IPlayer 的实现。他得到的只是一个接口,不能篡改对象。 Game 知道实现细节,可以管理玩家的状态,例如加点:
interface IPlayer
{
int Points { get; }
}
class Player : IPlayer
{
...
void AddPoints(int points);
}
- 第二种方法
void AddPlayer(IPlayer player)
在这种方法中,调用者负责交付满足接口的对象。从而了解详情。
我想知道:这些方法中的任何一个明显更好/更差吗?
只是对我的观点发表评论:
我的目标是拥有清晰的 API。而且我认为第一种方法更好。当我给用户我的图书馆时,我只给他界面。所有细节都保留在里面。 (类似地,我可以访问IGame,在后台是Game 的一个实例)
【问题讨论】:
标签: api architecture