Java语言实现的单例设计模式复习
2015-10-26 22:22
716 查看
1 单例设计模式概述
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。它是对问题行之有效的解决方式和思想。单例(单个实例)设计模式可以保证一个类在内存中的对象唯一性。比如对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。为了保证对象的唯一性,一是不允许其他程序用new创建该类对象;二是在该类创建一个本类实例对象;三是对外提供一个方法让其他程序可以获取该对象。步骤:私有化该类的构造函数;通过new在本类中创建一个本类对象;定义一个公有的方法,将创建的对象返回。
2 “饿汉式”单例设计模式程序示例
package captain; public class SingleDemo { public static void main(String[] args) { // TODO Auto-generated method stub SingleTest st1 = SingleTest.getInstance(); SingleTest st2 = SingleTest.getInstance(); st1.setNum(10); st2.setNum(20); System.out.println(st1.getNum()); System.out.println(st2.getNum()); } } class SingleTest{ private int num; //“饿汉式”(类一旦加载对象就被创建)单例设计模式的三步 private static SingleTest st = new SingleTest();//在该类中创建一个本类的私有化静态的对象 private SingleTest(){}//私有化该类的构造函数 public static SingleTest getInstance(){//对外提供一个公有化静态的方法返回一个该类的对象。 return st; } public void setNum(int num){ this.num = num; } public int getNum(){ return num; } }
3 “懒汉式”单例设计模式程序示例
package captain; public class SingleDemo { public static void main(String[] args) { // TODO Auto-generated method stub SingleTest st1 = SingleTest.getInstance(); SingleTest st2 = SingleTest.getInstance(); st1.setNum(10); st2.setNum(20); System.out.println(st1.getNum()); System.out.println(st2.getNum()); } } class SingleTest{ private int num; //“懒汉式”(调用getInstance方法时才创建对象)单例设计模式的三步,这种单例设计模式在多线程中存在线程安全问题。 private static SingleTest st = null;//在该类中声明一个本类的私有化静态的对象的空引用。 private SingleTest(){}//私有化该类的构造函数 public static SingleTest getInstance(){//对外提供一个公有化静态的方法返回一个该类的对象。 if(st == null) st = new SingleTest(); return st; } public void setNum(int num){ this.num = num; } public int getNum(){ return num; } }
相关文章推荐
- 关于public定义方法和类的作用,以及包和import语句
- Java中抽象类和接口的区别
- JAVA文件操作之默认字符集编码
- 复习数据类型
- java设计模式
- Eclipse插件集合及其安装方法
- Java 数据库 第五章 查询数据(DQL)
- Spring之SpringMVC(源码)启动初始化过程分析
- Java 数据库 第三章 数据库完整性
- Java 数据库 第二章 管理数据库和表
- Java 数据库 第一章 关系型数据库
- JAVA的String 类【转】
- Spring4.0整合Quartz实现定时任务
- (转)Java单例模式
- Spring依赖注入
- JAVA中Process类的用法(感觉不错)
- Eclipse自动提示
- Java开发搜索引擎爬虫
- Spring+Mybatis多数据库的配置
- Java实现智能机器自动操作电脑