我正在尝试为工厂类创建一个连接池,这个设计模式可以帮助我创建连接池.user希望在外部指定没有连接和最大连接。我搜索了一段时间,有些人建议使用Singleton或者将初始化代码放在一些静态块中。但其他人说单身人士很糟糕。那么,什么应该是用于连接池的正确设计模式?感谢。
答案 0 :(得分:4)
Singleton因某些原因而不好,例如通常你不能注入Mock对象。如果你提供一种机制(或不需要)来模拟测试它,那么我没有看到问题。
请注意,有很多优秀的连接池可用,我首先建议您查看现有的连接池。
答案 1 :(得分:1)
数据库连接池
最初在我的应用程序中我使用apache-commons-dpcp
并且我遇到了很多连接问题,经过长时间的分析后我使用了bonecp
。我建议bonecp
连接轮询。并且严格不要使用Singleton patten。一旦您的申请上线,它将为您带来巨大的痛点。
TCP连接池
对于TCP池我建议使用Netty并查看Apache MINA。
答案 2 :(得分:1)
正如之前的评论者所建议的那样,使用像Apache DBCP,C3P0,BoneCP或HikariCP这样的库。
但是如果你想“发明你自己的连接池”并理解如何为教育目的而做,那么从单线开始并扩展它以保存预配置数量的实例。