设计方案:点对点应用程序

时间:2012-01-14 23:01:01

标签: java oop design-patterns

我即将在Java中为学校项目开发一个点对点文件共享应用程序,并正在考虑其设计。我有两种选择:

1)

一个Peer类,它包含所有状态信息,如ID,其首选邻居,件数等。

一个PeerManager类,它充当Peer类的接口。它将包含对Peer对象的引用,然后是对其进行操作的方法。一些方法是updatePreferredNeighbours,连接或断开与另一个peer,generateLogs等。

但是当我从OO设计的角度考虑它时,我觉得Peer对象应该对它的行为负责。这让我想到了第二种选择:

2)

包含所有方法的Peer接口,例如连接到其他对等方,更新邻居等(之前在peerManager中)

和此接口的实现说PeerImpl,它包含所有状态信息,并且还实现了接口中的所有方法。

但我对这种方法的问题是,它会使Impl类混乱。状态由大量信息组成,然后我需要有他们的getter和setter,以便其他线程可以更新状态。另外,如果我还必须实现接口的所有方法,它将使实现类庞大且难以维护甚至调试。


有没有其他方法来解决这个问题,有什么建议吗?或者我应该选择哪一个?

PS:我不能在这里提出项目的所有要求,因为它会使帖子太大,但我所描述的或多或少是项目的本质。

1 个答案:

答案 0 :(得分:0)

如果不了解问题的详细信息,很难具体说明。但是,如果从数据建模的角度来看Peer类,似乎(至少)有两类数据:像ID这样的东西,它们是Peer对象的属性,以及像首选邻居这样的东西,它们是Peers之间的关系属性。我会考虑将它们分成不同的对象类。

关于第二种方法的复杂性问题:对于第一种方法的PeerManager类,是否存在相同的问题?在我看来,无论是哪种方式都是一个问题,而不是支持一种或另一种方法。