我制作了一个界面,其中包含了玩家应具备的所有常用方法。我在我的代码中实现了它,我的同事也是如此。但许多不了解我的界面的开发人员创建了自己的方法,如playMyPlayer()等。
如何强制其他程序员实现我的界面?
答案 0 :(得分:1)
执行此操作的唯一方法是创建一个有用的类,该类需要实现接口的对象实例:
public class UsefulClass {
public void DoSomethingIrresistable(IPlayer player) {
// ... implementation here
}
}
任何想要好东西的人都必须找到或创建一个实现IPlayer
的类。
否则,为什么有人会首先实现这个界面?您创建接口以保证某些类成员存在,而不是强迫人们以您认为应该设计的方式组织他们的类。
答案 1 :(得分:1)
使用您自己的方案进行解释:
接口
interface Player{
public void play();
public void pause();
public void stop();
}
正在实施Player
Intreface;
class AudioPlayer implements Player{...}
class VideoPlayer implements Player{...}
一些额外的课程。毫无意义但似乎相关
Class PlayList{}
扮演重要角色的枚举;
enum MEDIAPLAYER {
AUDIO,VIDEO;
public Player getPlayer() {
switch (this) {
case AUDIO:
return new AudioPlayer();
case VIDEO:
return new VideoPlayer();
default:
return new AudioPlayer();
}
}
}
使用您的代码
Player testPlayer = MEDIAPLAYER.getPlayer();
:
testPlayer.play();
现在,如果添加了任何新玩家,其条目将转到MEDIAPLAYER
,返回Player
类型对象。所以每个人都必须实施Player
另一种方法:
您可以创建一个抽象类,比如MasterPlayer
,它具有Player
接口所具有的所有抽象方法。此外,MasterPlayer
还有一些其他方法,例如管理PlayList
答案 2 :(得分:0)
您自己确定了主要问题,并非这些开发人员选择不使用您的界面,他们并不知道它存在。
我认为这里的主要内容是实现一个系统,告知开发人员他们可以访问哪些代码,以及wiki或其他知识库,以便他们可以搜索他们需要的内容。
一旦你有了一个系统来通知你的开发人员什么接口/代码样本/他们可以使用它们,它们将更容易确保他们使用它。并且公平地说,如果您提供的代码编写得很好并且支持他们需要的功能,那么大多数开发人员都会使用它,因为它可以节省他们的工作。
然而,您应该在编码标准/行为准则中加入关于重用现有代码而不是重写的内容但是您不能这样做,直到您有一个可靠的系统来通知开发人员可以使用哪些代码。