JAVA设计模式之单例设计模式
2015-12-05 09:10
483 查看
package com.qianfeng.day_11;
//单例设计模式
/**
* 1.构造函数无法暴露出去,只能用private进行修饰
* 2.因为是单例,所以,必须存在唯一的实例,也即,那唯一的实例,只能在类内部创建
* 3.无法创建对象,外部需要访问时,只能同类名进行方法,也即,必须使用static修饰
* (属性/方法访问有2中:对象.xxx 类名.xxx
*
*/
/*单例模式
* 1:构造方法私有化。
* 2:声明一个静态的成员变量。
* 3:提供一个公共的方法,返回该类的实例。
* 饿汉式跟懒汉式的区别
* 1:项目中用饿汉式。而面试经常问懒汉式。
* 2:懒汉式代码是有缺陷的,会出现问题。
*/
// 懒汉式
package com.qianfeng.writer;
/*单例模式
* 1:构造方法私有化。
*/
public class SingInstance {
private SingInstance(){
}
private static SingInstance single;//懒汉式。在声明的时候没有给它创建对象。
public static SingInstance getInstance(){//线程不安全。讲线程的时候再解决问题。
if(single==null){
single = new SingInstance();
}
return single;
}
}
// 饿汉式
package com.qianfeng.writer;
/*单例模式
* 1:构造方法私有化。
* 2:声明一个静态的成员变量。
* 3:提供一个公共的方法,返回该类的实例。
* 饿汉式跟懒汉式的区别
* 1:项目中用饿汉式。而面试经常问懒汉式。
* 2:懒汉式代码是有缺陷的,会出现问题。
*/
public class SingInstance2 {
private SingInstance2() {
}
private static SingInstance2 single = new SingInstance2();// 饿汉式。
public static SingInstance2 getInstance() {
return single;
}
}
//测试
package com.qianfeng.writer;
public class TestSingle {
public static void main(String[] args) {
System.out.println(SingInstance.getInstance());
System.out.println(SingInstance.getInstance());
System.out.println(SingInstance.getInstance());
System.out.println(SingInstance.getInstance());
System.out.println(SingInstance.getInstance());
}
}
//单例设计模式
/**
* 1.构造函数无法暴露出去,只能用private进行修饰
* 2.因为是单例,所以,必须存在唯一的实例,也即,那唯一的实例,只能在类内部创建
* 3.无法创建对象,外部需要访问时,只能同类名进行方法,也即,必须使用static修饰
* (属性/方法访问有2中:对象.xxx 类名.xxx
*
*/
/*单例模式
* 1:构造方法私有化。
* 2:声明一个静态的成员变量。
* 3:提供一个公共的方法,返回该类的实例。
* 饿汉式跟懒汉式的区别
* 1:项目中用饿汉式。而面试经常问懒汉式。
* 2:懒汉式代码是有缺陷的,会出现问题。
*/
// 懒汉式
package com.qianfeng.writer;
/*单例模式
* 1:构造方法私有化。
*/
public class SingInstance {
private SingInstance(){
}
private static SingInstance single;//懒汉式。在声明的时候没有给它创建对象。
public static SingInstance getInstance(){//线程不安全。讲线程的时候再解决问题。
if(single==null){
single = new SingInstance();
}
return single;
}
}
// 饿汉式
package com.qianfeng.writer;
/*单例模式
* 1:构造方法私有化。
* 2:声明一个静态的成员变量。
* 3:提供一个公共的方法,返回该类的实例。
* 饿汉式跟懒汉式的区别
* 1:项目中用饿汉式。而面试经常问懒汉式。
* 2:懒汉式代码是有缺陷的,会出现问题。
*/
public class SingInstance2 {
private SingInstance2() {
}
private static SingInstance2 single = new SingInstance2();// 饿汉式。
public static SingInstance2 getInstance() {
return single;
}
}
//测试
package com.qianfeng.writer;
public class TestSingle {
public static void main(String[] args) {
System.out.println(SingInstance.getInstance());
System.out.println(SingInstance.getInstance());
System.out.println(SingInstance.getInstance());
System.out.println(SingInstance.getInstance());
System.out.println(SingInstance.getInstance());
}
}
相关文章推荐
- JAVA中的转义字符
- 【JAVA】集合交并补
- 制作一个简单的包含有过滤器的登录程序
- java流分析一个基础程序
- 用Java注册用户并保存在数据库中
- 【java】java内存模型 (1)--基础
- Java中如何将String转成Date
- Struts2_学习笔记(二)--------Namespace、Action、Path、ActionMethod_DMI、ActionWildcard
- Struts2_学习笔记(一)--------学习工具下载、HelloWorld、运行机制
- 多态
- myeclipse导入项目显示js文件报错
- java多线程学习(六)---Thread其它方法
- java数据类型图
- Java基础
- 利用JAVA想数据库中提交数据
- JDK下载与配置
- JAVA随堂笔记课【一】:命名规范
- JAVA ClassLoader 介绍
- java基础,分支结构、循环、数组
- java 图形用户界面的设计与实现practice