java中设计模式(多例)的实例详解
发布时间:2020-12-14 14:08:33 所属栏目:Java 来源:网络整理
导读:java中设计模式(多例)的实例详解 多例: 单例设计模式的变形,可以看成是一个缓存池的单例,而缓存池里面可以存多个数据 实例代码: //单例+缓存---没有控制池大小public class A { //1创建一个单例的池(private即把池封装成单例了) private static MapS
java中设计模式(多例)的实例详解 多例:单例设计模式的变形,可以看成是一个缓存池的单例,而缓存池里面可以存多个数据 实例代码: //单例+缓存---没有控制池大小 public class A { //1创建一个单例的池 (private即把池封装成单例了) private static Map<String,A> pool = new HashMap<String,A>(); //池--集合: Map:key-value public synchronized static A getInstance(String key){ //2根据key到池中去获取obj A obj = pool.get(key); if(obj==null){ obj = new A(); pool.put(key,obj); } //3如果该obj存在则返回,否则创建一个新的放入池中并返回 return obj}} import java.util.HashMap; import java.util.Map; //单例+缓存---控制池大小,每个对象的key值由该类内部指定 public class A { //1创建一个单例的池 private static Map<Integer,A> pool = new HashMap<Integer,A>(); //池--集合: Map:key-value //当前对象的序号 private static int num=0; //总数量 private static int MAX_SIZE=3; public synchronized static A getInstance(){ //2根据num到池中去获取obj A obj = pool.get(num); if(obj==null){ obj = new A(); pool.put(num,obj); } num = (num+1)%MAX_SIZE; //范围: 0 ~ MAX_SIZE-1 //3如果该obj存在则返回,否则创建一个新的放入池中并返回 return obj; } } 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- spring boot实现超轻量级网关(反向代理、转发)
- 基于注解的组件扫描详解
- java – 使用JUnit进行简单的JDBC连接测试
- java – 调试RestTemplate发布请求
- java – Spring Boot测试中的MockBean批注导致NoUniqueBean
- java – org.springframework.jdbc.IncorrectResultSetColu
- 当Java计算一个连词(\u0026\u0026)时,如果exp1为fa
- java – 如何避免instanceof调用?
- Java项目安全处理方法
- SpringCloud之分布式配置中心Spring Cloud Config高可用配置