Java设计模式--单例模式

单例设计模式:保证一个类只有一个设计模式,并提供一个访问它的全局访问点。


特点:

1.构造方法私有化

2.声明一个本类对象

3.给外部提供一个静态方法获取对象实例


两种实现方式:

1.饿汉式

2.懒汉式


通过建立Singleton1和Singleton2两个类来分别实现饿汉式单例模式和懒汉式单例模式

package 单例模式;

public class SingletonDemo {
     public static void main(String[] args) {
    //getInstance()无论调用多少次,都只有s一个对象
    System.out.println("-------------饿汉式单例模式调试结果----------");
	Singleton1 s1=Singleton1.getInstance();
	Singleton1 s2=Singleton1.getInstance();
	s1.print(); 
	s2.print();
	System.out.println("判断s1和s2是否为同一对象,答案是:"+(s1==s2));
	System.out.println("");
	System.out.println("-------------懒汉式单例模式调试结果----------");
	Singleton2 s3=Singleton2.getInstance();
	Singleton2 s4=Singleton2.getInstance();
	s3.print(); 
	s4.print();
	System.out.println("判断s3和s4是否为同一对象,答案是:"+(s1==s2));
	
	}
}
/*
 * 把该类设计成单例设计模式
 * 饿汉式
 */
class Singleton1{
	//定义一个变量来存储创建好的类实例,直接在这个创建类实例,只会创建一次,体现出“饿”
	private static Singleton1 s=new Singleton1();
	/*
	 * 构造方法私有化
	 * 本类外部无法调用,也就不能被实例化
	 */
	private Singleton1() {
		
	}
	public static Singleton1 getInstance(){
		return s;
	}
	public void print() {
		System.out.println("饿汉式单例模式");
	}
}
class Singleton2{
	//定义一个变量来存储创建好的类实例,但不直接创建类实例,体现出“懒”
	private static Singleton2 s=null;
	private void SingleTon2() {
		
	}
	public static Singleton2 getInstance(){
		if(s==null){
			//创建类实例,只会创建一次
			s=new Singleton2();
		}
		 return s;
	} 
	public void print(){
		System.out.println("懒汉式单例模式");
	}
	
}

Java设计模式--单例模式_第1张图片



你可能感兴趣的:(java,设计模式,单例设计模式,私有化)