中易网

使用单例模式getInstance 有什么好处

答案:2  悬赏:0  
解决时间 2021-01-30 13:57
使用单例模式getInstance 有什么好处
最佳答案
优点:
1.在单例模式中,活动的单例只有一个实例,对单例类的所有实例化得到的都是相同的一个实例。这样就 防止其它对象对自己的实例化,确保所有的对象都访问一个实例
2.单例模式具有一定的伸缩性,类自己来控制实例化进程,类就在改变实例化进程上有相应的伸缩性。
3.提供了对唯一实例的受控访问。
4.由于在系统内存中只存在一个对象,因此可以 节约系统资源,当 需要频繁创建和销毁的对象时单例模式无疑可以提高系统的性能。
5.允许可变数目的实例。
6.避免对共享资源的多重占用。
缺点:
1.不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态。
2.由于单利模式中没有抽象层,因此单例类的扩展有很大的困难。
3.单例类的职责过重,在一定程度上违背了“单一职责原则”。
4.滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;如果实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失。
全部回答
**
* 对象的实例化方法,也是比较多的,最常用的方法是直接使用new,而这是最普通的,如果要考虑到其它的需要,如单实例模式,层次间调用等等。
* 直接使用new就不可以实现好的设计好,这时候需要使用间接使用new,即getInstance方法。这是一个设计方式的代表,而不仅仅指代一个方法名。
*
*/

public class CacheManager {
private BaseCache baseCache;
private static CacheManager instance;
private static Object lock = new Object()// 特殊的instance变
private CacheManager() {
//初始BaseCache 设置默认缓存时间为1分钟保证数据相对准确性 高并发下查询压力
baseCache = new BaseCache("user", 60);
}
public static CacheManager getInstance() {
if (instance == null) {
synchronized (lock) //增加了个锁,锁定了对象lock,在同一个类实例中,是线程安全的,但不同的实例还是不安全的
if (instance == null) {
instance = new CacheManager();
}
}
}
return instance;
}
复制代码
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
温州哪有好吃又实惠的韩国烤肉店啊?
歌曲《心愿》是哪四个女生唱的?
皇甫圣华到底是男是女
主角是言小念萧圣的小说书名叫什么 言小
2750美金一美金70人民币多钱
求一个搞电磁的工程师帮忙
我妈在中国邮政银行存钱别忽悠成买了2年定期
男女刚开始交往该注意什么问题?
银行招不招JAVA程序员?
黄山归来不看 (苏轼诗句一)
如果男朋友说我不想说你了,跟我没关系他什么
我想要小学四年级奥数题100道
富美嘉led灯饰批发地址好找么,我有些事要过
求C#实现360安全卫士那样的按功能切换界面的d
暂住证过期半年,居住证要什么材料
推荐资讯
木瓜西瓜奇异果打汁怎么苦?西瓜子要去?
打井下25米深管井深多少米
5个月没发工资,我没辞职直接走了算违约吗
美化翡翠手镯四五百元的对身体有害吗?
丁桂儿脐贴价格请回答
亲爱的,,韩语怎么讲?
奥比岛旧版衣服
在三相异步的电动机的正反转控制线路中那些触
求与“凉薄少女泪倾城”对应的情侣名
在黑石财经开户黄金T+D,我要先学点什么呢
沙疗是什么?
我想办一张一万的信用卡前期无费用的.谁有电
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?