java 23种设计模式 04 单例模式

来源:互联网 发布:ubuntu安装qt开发环境 编辑:程序博客网 时间:2024/06/05 15:31

  java 23种设计模式 04 单例模式

一、什么是单例模式

   单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。
    其实,GoF对单例模式的定义是:保证一个类、只有一个实例存在,同时提供能对该实例加以访
问的全局访问方法。 

二、为什么要使用单例模式呢?

在应用系统开发中,我们常常有以下需求:
- 在多个线程之间,比如servlet环境,共享同一个资源或者操作同一个对象
- 在整个程序空间使用全局变量,共享资源
- 大规模系统中,为了性能的考虑,需要节省对象的创建时间等等。


因为Singleton模式可以保证为一个类只生成唯一的实例对象,所以这些情况,Singleton模式就派上用场了。

三、单例模式实现

1.饿汉式。
2.懒汉式。
3.双重检查。

别人写的博客单例模式

代码下载:链接: 百度云下载地址密码:snis

代码:

public class MainClass {public static void main(String[] args) {Person2 per = Person2.getPerson();Person2 per2 = Person2.getPerson();per.setName("zhangsan");per2.setName("lisi");System.out.println(per.getName());System.out.println(per2.getName());}}public class Person {public static final Person person = new Person();private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}//构造函数私有化private Person() {}//提供一个全局的静态方法public static Person getPerson() {return person;}}public class Person2 {private String name;private static Person2 person;public String getName() {return name;}public void setName(String name) {this.name = name;}//构造函数私有化private Person2() {}//提供一个全局的静态方法public static Person2 getPerson() {if(person == null) {person = new Person2();}return person;}}//2.懒汉式。public class Person3 {private String name;private static Person3 person;public String getName() {return name;}public void setName(String name) {this.name = name;}//构造函数私有化private Person3() {}//提供一个全局的静态方法,使用同步方法public static synchronized Person3 getPerson() {if(person == null) {person = new Person3();}return person;}}//3.双重检查。public class Person4 {private String name;private static Person4 person;public String getName() {return name;}public void setName(String name) {this.name = name;}//构造函数私有化private Person4() {}//提供一个全局的静态方法public static Person4 getPerson() {if(person == null) {synchronized (Person4.class) {if(person == null) {person = new Person4();}}}return person;}}


原创粉丝点击