设计模式

1.    设计模式   设计模式是一套反复使用,多数人知晓的,代码设计经验的总结,,,,目的可重用代码,让代码更容易被他人理解,保证代码可靠性。

JAVA 23 设计模式,单例模式,工厂模式等。

为什么需要单例模式?????有些对象我们只需要一个,例如配置文件,工具类,线程池,缓存,日志对象等。单例模式保证整个应用中某个实例有且只有一个。

单例模式分为    饿汉模式 ,懒汉模式 

  * 区别:饿汉模式   的特点是加载类的时候比较慢,但是运行的时候获取对象的速度非常快,线程安全
 *      懒汉模式  的特点是类加载比较快,但是运行时候获取对象的速度比较快,线程不安全

 

1.   饿汉模式

 

/*
 * 单例模式   Singleton
 * 应用场合:有些对象有时候只是需要一个就足够了,如古代皇帝,老婆
 * 作用:保证整个应用程序中某个实例有且只有一个
 * 类型:饿汉模式 ,懒汉模式   
 * 区别:饿汉模式   的特点是加载类的时候比较慢,但是运行的时候获取对象的速度非常快,线程安全
 *      懒汉模式  的特点是类加载比较快,但是运行时候获取对象的速度比较快,线程不安全
 */
public class Singleton {
	//1. 将构造方法私有化,不允许外部直接创造对象
     private Singleton(){
    	 
     }
     // 2. 创建类的唯一实例  使用private static修饰
     // 饿汉模式 在什么时候加载,静态成员属于类所有,所以当类加载的时候,就会执行,创建类的唯一实例,不管用户是否创建调用
     private static  Singleton instance=new Singleton();
     // 提供一个用于获取实例的方法    使用private static修饰
     public static Singleton getInstance(){
    	 return instance;
     }
     
}

 2.懒汉模式

/*
 * 懒汉模式
 */
public class Singleton2 {
 //1. 将构造方法私有化,不允许外部直接创造对象
 private Singleton2(){
      
      }
  // 2. 创建类的唯一实例  使用private static修饰
      private static Singleton2 instance;
     
   // 3.提供一个用于获取实例的方法    使用private static修饰
     
      public static Singleton2 getInstance(){
       if(instance==null){
        instance=new Singleton2();
       }
       return instance;
      }
     
}

 

 

3.  测试类

public class Demo {
        public static void main(String[] args) {
        	//饿汉模式
			Singleton s1=Singleton.getInstance();
			Singleton s2=Singleton.getInstance();
			if(s1==s2){
				System.out.println("s1和s2是同一个实例");
			}else{
				System.out.println("s1和s2不是同一个实例");
			}
			
			Singleton2 s3=Singleton2.getInstance();
			Singleton2 s4=Singleton2.getInstance();
			
			if(s3==s4){
				System.out.println("s3和s4是同一个实例");
			}else{
				System.out.println("s3和s4不是同一个实例");
			}
			
			
		}
}

 

posted @ 2018-05-02 22:34  雪落无痕1  阅读(175)  评论(0编辑  收藏  举报