在进公司java面试时,容易考到的题目,singleton模式的特点并写一个singleton。
单例模式有以下的特点:
1.单例类只可有一个实例。
2.单例类必须自己创建自己这惟一的实例。
3.单例类必须给所有其他对象提供这一实例。
package com.xyq.demo;
public class Singleton {
private static Singleton singleton;
private Singleton() {
};
public static Singleton getInstance() {
if (singleton == null)
singleton = new Singleton();
return singleton;
}
}
// 测试类
class singletonTest {
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
if (s1 == s2)
System.out.println("s1 is the same instance with s2");
else
System.out.println("s1 is not the same instance with s2");
}
}
输出: s1 is the same instance with s2
恶汉式单例类
package com.xyq.demo;
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}
// 测试类
class singletonTest {
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
if (s1 == s2)
System.out.println("s1 is the same instance with s2");
else
System.out.println("s1 is not the same instance with s2");
}
}
输出: s1 is the same instance with s2
懒汉式单例类
package com.xyq.demo;
public class Singleton {
private static Singleton instance = null;
/**
* 私有的默认构造子,保证外界无法直接实例化
*/
private Singleton() {
}
/**
* 静态工厂方法,返还此类的惟一实例
*/
synchronized public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
// 测试类
class singletonTest {
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
if (s1 == s2)
System.out.println("s1 is the same instance with s2");
else
System.out.println("s1 is not the same instance with s2");
}
}
输出: s1 is the same instance with s2
我写的这些仅适用于公司面试,如果要想好好学习设计模式,得全面的看看这方面的资料
分享到:
相关推荐
是http://blog.csdn.net/lxq_xsyu/article/category/1544127博客中java设计模式的源代码。下载前请先看《设计模式——单例模式》一文。
Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式...
单例模式源代码 博文链接:https://yangguangfu.iteye.com/blog/815944
今天给大家带来的是23种设计模式的第一种——单例模式。前天写的第一篇文章设计模式的七大原则,是我第一次写文章,目前看了浏览量,让我信心大增。文章有什么讲述方式不对的欢迎大家随时给我私信。24小时恭候!!...
Java全能学习面试手册——互联网企业面试真题.zip 01 java面试——北京-百度-Java中级.pdf 02 java面试——北京-京东-Java中级.pdf 03 java面试——广州-唯品会-Java大数据开发工程师.pdf 04 java面试——杭州-阿里...
一个简单的java工程,包含注释,一目了然,其中包含了单例模式的所有实现方式,懒汉式,饿汉式,双重校验,枚举,静态内部类等方式实现单例。
2024java面试——葵花宝典-V1.docx2024java面试——葵花宝典-V1.docx2024java面试——葵花宝典-V1.docx2024java面试——葵花宝典-V1.docx2024java面试——葵花宝典-V1.docx2024java面试——葵花宝典-V1.docx2024java...
java面试——MongoDB面试专题.zip
(1) 由于每次使用new关键字来实例化TaskManager类时都将产生一个新对象,为了确保TaskManager实例的唯一性,我们需要禁止类的外部直接使用n
java面试——Nginx面试专题.zip
通过Java语言,主要实现了六种单例的生成方法,包括懒汉式、饿汉式、双重校验锁、枚举、静态内部类,可以根据实际情况选择使用
java面试——深圳-OPPO-Java高级.zip
java 单例模式
java面试——深圳-银盛支付-Java中级.zip
java面试——南京-软通动力-Java中级.zip
java面试——深圳-中国平安-Java中级.zip
java面试——深圳-丰巢科技-Java高级.zip
java Singleton单例模式 java Singleton单例模式
java面试——zookeeper面试专题.zip
java面试——深圳-乐信-Java高级.zip