`
xiatiaohcx
  • 浏览: 32561 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

java面试——单例模式

阅读更多

在进公司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

我写的这些仅适用于公司面试,如果要想好好学习设计模式,得全面的看看这方面的资料

 

分享到:
评论

相关推荐

    java面试——深圳-腾讯-Java高级.zip

    这份压缩包文件"java面试——深圳-腾讯-Java高级.zip"包含了关键的面试指南,特别是对于那些寻求在大型科技公司如腾讯工作的Java开发者而言。其中的PDF文档详细列出了可能的面试问题和解答,帮助你全面理解并巩固...

    java面试——深圳-银盛支付-Java中级.zip

    这份"java面试——深圳-银盛支付-Java中级.zip"压缩包文件很可能包含了针对Java中级开发者的一系列面试问题和解答,旨在帮助求职者提升自己的技能,并在面试中脱颖而出。下面,我们将深入探讨一些可能涵盖的Java中级...

    java面试——深圳-中国平安-Java中级.zip

    下面将根据"java面试——深圳-中国平安-Java中级.pdf"这份资料,提炼出一些核心的Java知识点。 1. **Java基础**: - **数据类型**:包括基本数据类型和引用数据类型,理解它们的区别和内存管理。 - **类与对象**...

    java面试——南京-软通动力-Java中级.zip

    这份资料“java面试——南京-软通动力-Java中级.zip”包含了一份详细的PDF文档,旨在帮助求职者准备相关的面试问题。以下是基于Java中级面试可能会涉及的一些核心知识点的详细阐述: 1. **Java基础** - **数据类型...

    java面试——杭州-蚂蚁金服-资深工程师.zip

    "java面试——杭州-蚂蚁金服-资深工程师.zip" 这个标题表明这是一份关于Java技术的面试准备资料,特别针对的是在杭州的蚂蚁金服公司应聘资深工程师的职位。这意味着这份压缩包可能包含了针对Java语言、高级编程技巧...

    java面试——深圳-OPPO-Java高级.zip

    - 常见设计模式:单例、工厂、建造者、适配器、装饰器、观察者、代理等模式的原理和应用场景。 - 设计模式组合:如何根据需求灵活组合设计模式,优化代码结构。 7. **JVM优化**: - 类加载机制:双亲委托模型,...

    java面试——上海-拼多多-Java高级.zip

    这份压缩包文件"java面试——上海-拼多多-Java高级.zip"包含了针对Java高级开发人员的面试问题和解答,帮助应聘者准备面试。以下是根据标题、描述和标签提炼出的一些核心Java知识点,这些内容通常会在拼多多的面试中...

    java面试——杭州-阿里云-Java中级.zip

    这个压缩包文件“java面试——杭州-阿里云-Java中级.zip”包含了一份详细的PDF文档,它可能涵盖了面试中常遇到的问题、技术要点以及解决策略。以下是基于Java中级工程师面试的一些关键知识点: 1. **基础语法**:...

    java面试——深圳-丰巢科技-Java高级.zip

    在Java高级面试中,面试官通常会关注应聘者对核心概念、并发处理、集合框架、设计模式、数据库操作、性能优化、垃圾收集以及框架应用等多个方面的理解和实践能力。以下是根据这些关键点展开的详细知识点: 1. **...

    java面试——深圳-商汤科技-Java高级.zip

    5. **设计模式**:设计模式是软件开发的通用解决方案,常见的有单例模式、工厂模式、观察者模式、装饰器模式等23种GOF设计模式。能够灵活运用设计模式解决实际问题,是衡量开发者经验与能力的重要标准。 6. **反射...

    java面试——深圳-乐信-Java高级.zip

    在Java高级面试中,面试官通常会关注候选人在核心Java、多线程、集合框架、JVM内存管理、设计模式、数据库操作、网络编程、异常处理、IO流、Spring框架及其实现原理等方面的知识掌握程度。以下是根据这些关键点展开...

    java面试——上海-携程-Java高级.zip

    在Java高级面试中,面试官通常会关注应聘者对核心概念的理解、问题解决能力以及实际项目经验。以下是一些可能涉及的重要知识点: 1. **Java基础** - 内存管理:了解Java内存模型(堆、栈、方法区、本地方法栈)...

    java面试——杭州-蚂蚁金服-Java高级.zip

    这份"java面试——杭州-蚂蚁金服-Java高级.zip"压缩包包含了一份详细的PDF文档,旨在帮助求职者准备这些面试。下面我们将深入探讨一些可能涉及的关键Java知识点。 1. **内存管理与垃圾回收**: - **内存区域**:...

    高级JAVA面试——最全的总结

    在准备高级JAVA面试时,全面了解和掌握各项知识点至关重要。以下是对标题和描述中提到的知识点的详细解析,以及从压缩包文件名中可以推测出的相关面试内容。 1. **JAVA基础** - 类与对象:理解面向对象编程的基础...

    java面试——厦门-中软国际-Java中级.zip

    在Java面试中,中级开发者需要具备扎实的基础知识,以及对一些高级特性和设计模式的理解。以下是一些核心的Java中级面试知识点: 1. **内存管理与垃圾回收**: - 理解Java内存模型(JVM内存结构),包括堆、栈、...

    java面试——北京-京东-Java中级.zip

    - 单例模式:了解懒汉式、饿汉式、双重检查锁定等实现方式。 - 工厂模式:简单工厂、工厂方法、抽象工厂的适用场景。 - 适配器模式:如何将不兼容接口转换为可兼容接口。 - 观察者模式:理解事件驱动编程,以及...

    java面试——深圳-蚂蚁金服-Java高级.zip

    在Java高级面试中,尤其是像蚂蚁金服这样的顶级科技公司,面试官通常会考察候选人在核心Java、并发处理、集合框架、多线程、垃圾回收、设计模式、数据库操作、网络编程、性能优化等多个领域的深入理解和应用能力。...

    java程序员必备——比较全的Java面试题

    【Java程序员必备——比较全的Java面试题】 Java编程语言作为全球最受欢迎的开发语言之一,其面试题库广泛且深入,涵盖了基础语法、面向对象、集合框架、多线程、网络编程、I/O流、数据库操作、设计模式等多个方面...

    Java面试之——代码与编程题

    【Java面试之——代码与编程题】是Java程序员在求职过程中常常遇到的面试环节,主要考察应聘者对Java语言的理解和实际操作能力。面试中,面试官可能会提出各种类型的编程题目,包括但不限于设计模式、继承机制、内部...

    Java面试宝典基础篇1——设计模式和分布式事务.pdf

    设计模式主要有23种,例如单例模式、工厂模式、观察者模式以及装饰器模式等,这些模式在JDK中有着广泛的应用。例如,单例模式在Runtime类中实现;工厂模式被用于创建不可变类的新实例;观察者模式在Swing事件监听中...

Global site tag (gtag.js) - Google Analytics