前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过单例模式模拟RAC连接 (r4笔记第76天)

通过单例模式模拟RAC连接 (r4笔记第76天)

作者头像
jeanron100
发布2018-03-15 16:22:41
5050
发布2018-03-15 16:22:41
举报

单例模式基本是学习设计模式的第一个模式,而且在工作中使用太普遍了,通用到我们感觉就应该是这样,但是如果真给你纸和笔,在5分钟内写出一个完整的单例模式,估计还是有不少人会中招。 RAC是实时应用集群,是oracle的一种高可用方案,假设我们有2个节点,如果其中一个节点出现问题,另外一个节点依然能够正常工作,对于客户端来说感觉是完全透明的,感觉不到任何的异常。 我们今天来通过设计模式的单例模式来模拟一下RAC连接的情况 首先是单例模式,一般都是认为一个类可以产生一个对象,如果对象的数量不收限制,也是可以实现的,这个就是单例模式的扩展。 我尝试写了如下的代码,模拟两个节点的情况

代码语言:javascript
复制
import java.util.ArrayList;

public class RacTest {
private static final RacTest rac1= new RacTest();
private static final RacTest rac2= new RacTest();
private final static ArrayList<RacTest> racNodes = new ArrayList<RacTest>();
private RacTest(){}
public static RacTest getInstance(){
int i = (int)(1+Math.random()*2)-1;
if(racNodes.size()==0){
racNodes.add(rac1);
racNodes.add(rac2);
}
System.out.println("rac instance "+(i+1)+" "+racNodes.get(i));
return racNodes.get(i);
}
public static void main(String[] args){
for(int i=0;i<20;i++){
RacTest.getInstance();
} 
}
}

这样,我们定义了两个节点,在初始化的时候指定getInstance()方法,然后在每次调用的时候都只初始化一次。 当然从客户端来说为了能够更加清晰表达出连接节点的随机性,我写了一个循环,一次循环200次,打印出连接的情况,通过数据更能够说明。可以从初始化的两个对象的地址看到只有两个对象。

代码语言:javascript
复制

rac instance 1 RacTest@42e816
rac instance 1 RacTest@42e816
rac instance 1 RacTest@42e816
rac instance 2 RacTest@9304b1
rac instance 1 RacTest@42e816
rac instance 1 RacTest@42e816
rac instance 2 RacTest@9304b1
rac instance 2 RacTest@9304b1
rac instance 1 RacTest@42e816
rac instance 2 RacTest@9304b1
rac instance 1 RacTest@42e816
rac instance 2 RacTest@9304b1
rac instance 2 RacTest@9304b1
rac instance 1 RacTest@42e816
rac instance 2 RacTest@9304b1
rac instance 1 RacTest@42e816
rac instance 1 RacTest@42e816
rac instance 1 RacTest@42e816
rac instance 1 RacTest@42e816
rac instance 2 RacTest@9304b1
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档