Dav*_*les 3 java design-patterns interface pacman
我在过去的6年里一直是Java程序员,从今年年初开始,我对游戏编程感兴趣.所以,我认为从一个流行的游戏开始是一个好主意,我在Java中实现了Pac-Man女士游戏.我可以说我的实现看起来与原始游戏大约有90%相似,我试图尽可能多地使用设计模式和最佳实践,因为这只是学习编写基本2D游戏的个人项目.
现在我完成了编码,我意识到我有19个接口,只有17个类!所以我开始想知道我是否可能过度使用接口.
以下是我使用的几个类/接口的示例:
类 - FullGame(实现FullGameInterface和FullGameObservable)
类 - View1(实现FullGameObserver)
接口 - FullGameInterface(基本功能方法:恢复,暂停,播放等)
接口 - FullGameObservable(允许注册视图以获取更新通知)
界面 - FullGameObserver(由2个不同的游戏视图实现接收通知)
我是否过度使用接口?
你有什么意见?
如果要更改实现,请使用接口.
对于类似FullGame对象的东西,您可能不需要界面.
如果您要更改FullGame的功能,那么您可以考虑创建一个接口,以便您可以切换为FullGameInterface实例化的对象.
编辑2:只在需要时使代码更复杂.如果您认为需要界面,请先停止.使用您已经拥有的课程.(但是当你使用它时,试着让调用者远离实现细节.)一旦你有了第二个类似的类,那么你就可以弄清楚什么是真正的接口和实现的内容.如果你的调用者仍然需要在公共接口中放置的实现细节,那么你就不能保持它们足够分离.
编辑更完整的答案:
接口可用于解耦要从实际对象(实现)访问对象(接口)的方法.这适用于以下几种情况:
List和ArrayList,和LinkedList. List是允许许多基于集合的方法接受a ArrayList或a 的通用接口LinkedList.该Collection接口允许对所有集合类似的安排.Image和两个实现者,FileImage和FileImageProxy.代理加载FileImage按需并将对Image接口的调用传递给实际对象.客户永远不会知道或关心他们如何获得图像,或者它是否真的被加载; 他们只知道有一个Image,他们可以使用它.| 归档时间: |
|
| 查看次数: |
1587 次 |
| 最近记录: |