我在java中创建了一个通用的'SocketServer'类,它接受以下参数: 字符串地址,int端口,类socketProtocol,String encryptionType,int backlogSize
基本上,我希望其他开发人员能够在他们的项目中实例化这个类,并为加密,积压,地址,端口设置一些简单的选项。此时他们必须设计协议。 SocketProtocol是一个启用sendMessage和receiveMessage的接口(以及其他一些)。
此时,该类的用户应该只实现SocketProtocol并将该类(即MySocketProto.class)传递给SocketServer实例,该实例将通过.newInstance()为每个传入连接实例化一个协议副本。 ;
这有意义吗?有没有更简单的方法来建立这种类型的功能?我不喜欢将类类型传递给服务器的想法,它看起来很奇怪。
谢谢大家, 克里斯
答案 0 :(得分:1)
在这种情况下我会使用Factory pattern。链接的维基百科示例有点冗长,但它可以非常简单:
public interface ISocketProtocolFactory {
ISocketProtocol buildProtocol();
}
然后,您的SocketServer
构造函数会获取实现ISocketProtocolFactory
的内容的实例,并随时询问新的ISocketProtocol
。
这将为您的用户提供构建ISocketProtocol
实例的更大灵活性,处理具有类参数的“肮脏”。
答案 1 :(得分:0)
我认为每个端口都有自己的协议。考虑到这一点,您将为端口指定它。
我过去做过的方法是让实现者传入一个继承自的类:
public Interface ProtocolInterface
{
public void serve(InputStream in, OutputStream out) throws IOException
...
其中InputStream和OutputStream是输入并输出到Socket