首页 / JAVA / 基于JAVA的设计模式之单例模式
基于JAVA的设计模式之单例模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了基于JAVA的设计模式之单例模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1716字,纯文字阅读大概需要3分钟。
内容图文
![基于JAVA的设计模式之单例模式](/upload/InfoBanner/zyjiaocheng/1206/e3e2afdf34e841a59de915cda7f68e3b.jpg)
- 概念
于大二上学期面向对象C++期中考试中有这么道题:一个Computer有多个USB插口,那么意味着这台电脑可以插多个鼠标,但是无论你如何拔插多少个鼠标,桌面上的鼠标一直只显示一个,且多个硬件鼠标都可以操控这个桌面上的鼠标,就这个场景进行程序设计。当时由于没有接触过设计模式当场就蒙蔽了,现在想起来较为简单。
单利模式保证内存中有且仅有一个对象,对内私有化构造函数,对外提供静态的获取对象引用的方法。
- 饿汉模式:顾名思义形容很饥饿,迫不及待的获取对象。通过加载类的时候就已经为对象分配了内存。对外提供一个公有的静态方法,由于静态方法内部成员必须静态的,所以instance必须也是静态的且不可改变的。
// 饿汉模式 public class Mouse { private String name; private Mouse(){ System.out.println("初始化对象"); } privatestaticfinal Mouse instance=new Mouse(); publicstatic Mouse getInstance(){ return instance; } public String getName() { return name; } publicvoid setName(String name) { this.name = name; } publicstaticvoid load(){} } publicclass Main { publicstaticvoid main(String[] args) { //Mouse mouse1=Mouse.getInstance(); //mouse1.setName("鼠标"); //Mouse mouse2=Mouse.getInstance(); //System.out.println(mous/e1.getName()+":"+mouse2.getName()); //鼠标:鼠标 Mouse.load(); } }
- 懒汉模式:懒汉模式顾名思义就如同一个很懒的人,用到的时候才去准备,总是临时抱佛脚。用到对象的时候才去为对象分配内存。
// 懒汉模式 public class Mouse { private String name; // 去掉final private static Mouse instance=null; publicstatic Mouse getInstance(){ if(instance==null){ instance=new Mouse(); } return instance; } private Mouse(){ System.out.println("初始化对象"); } public String getName() { return name; } publicvoid setName(String name) { this.name = name; } }
- 懒汉模式与饿汉模式的区别
创建对象的时机不同,饿汉是加载类时就创建,用load()方法证明了,懒汉是随用随创建,这就导致了饿汉模式造成了内存浪费。但是懒汉模式在多线程的情况下,由于判空条件(if instance == null)就会导致对象的不唯一性发生
- 懒汉模式在多线程的应用
public static synchronized Mouse getInstance(){ if(instance==null){ instance=new Mouse(); } return instance; } publicstatic Mouse getInstance(){ synchronized (Mouse.class) { if (instance == null) { instance = new Mouse(); } } return instance; }
原文:https://www.cnblogs.com/hbsdljz/p/11076700.html
内容总结
以上是互联网集市为您收集整理的基于JAVA的设计模式之单例模式全部内容,希望文章能够帮你解决基于JAVA的设计模式之单例模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。