我在Java中创建了一个通用的“ SocketServer”类,该类采用以下参数:
字符串地址,整数端口,类套接字协议,字符串加密类型,整数backlogSize
基本上,我希望其他开发人员能够在他们的项目中实例化此类,并为加密,积压,地址,端口设置一些简单的选项。在这一点上,他们必须设计协议。 SocketProtocol是一个接口,该接口启用sendMessage和receiveMessage(以及其他一些接口)。
此时,该类的用户应该只实现SocketProtocol并将该类(即MySocketProto.class)传递给SocketServer实例,该实例将依次通过.newInstance()为每个传入的连接实例化协议的副本。
这有意义吗?有没有更简单的方法来建立这种类型的功能?我不喜欢将类类型传递给服务器的想法,这似乎很奇怪。
谢谢大家
克里斯
最佳答案
在这种情况下,我会使用Factory pattern。链接的Wikipedia示例有点冗长,但实际上非常简单:
public interface ISocketProtocolFactory {
ISocketProtocol buildProtocol();
}
然后,您的
SocketServer
构造函数将采用实现ISocketProtocolFactory
的对象的实例,并向其要求新的ISocketProtocol
。这将为您的用户在构造
ISocketProtocol
实例时提供更大的灵活性,并注意具有类参数的“麻烦”。关于java - 帮助正确设计通用套接字服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3257832/