单例模式(创建型)
单例模式是一种对象创建型模式,使用单例模式,可以保证一个类只生成唯一的一个实类对象;也就是说一个应用程序中只会存在一个实类对象;保证一个类,只有一个实类存在,同时提供能对该实例加以访问的全局访问方法。
单例模式分为饿汉模式和懒汉模式
创建一个类
package Singletonmodel; /* * 单例模式的 重点 * 一个类的实类有且仅有一个的时候 */ public class Person { private Person() {} private String name; private int age; private static Person person=null; public int getAge() { return age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } }
饿汉模式:在声明的位置进行创建
package Singletonmodel; /* * 单例模式的 重点 * 一个类的实类有且仅有一个的时候 */ public class Person1 { //不能创建对象 private Person1() {} private String name; //使用final修饰成为常量不能被修改 private static final Person1 person1=new Person1(); public String getName() { return name; } public void setName(String name) { this.name = name; } public static Person1 getPerson (){//饿汉实现方法 return person1; } }
懒汉模式:在方法内部进行创建(使用线程锁来控制当前类你没有使用完成别的类无法进行访问)
package Singletonmodel; /* * 单例模式的 重点 * 一个类的实类有且仅有一个的时候 */ public class Person2 { //不能创建对象 private Person2() {} private String name; private static Person2 person2=new Person2(); public String getName() { return name; } public void setName(String name) { this.name = name; } public static Person2 getPerson (){//懒汉实现方法 if (person2==null) { synchronized (person2.getClass()) { person2=new Person2(); } } return person2; } }