目录
1、学习设计模式
-
什么是设计模式?
设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的实验和错误总结出来的
设计模式是一套被反复使用的,多数人知晓的,经过分类编目的,代码设计经验的总结
-
设计模式的作用是什么?
使用设计模式是为了重用代码,让代码更容易被他人理解,保证代码可靠性。
-
常见的设计模式
常见的设计模式有23种(单例模式,工厂模式,代理模式......)
2、单例模式(懒汉式、饿汉式)
单例模式---保证一个类仅有一个实例。
当类被频繁与销毁的时候,我们使用单例模式,这样可以减少了内存的开销,避免对资源的多重占用。
两种表示方法
-
懒汉式(因为懒,只有用的时候,才new )
public class SingleObject1{ /* 1.构造方法私有 2.提供一个静态成员变量(私有),用于保存当前类对象 3.提供一个静态方法(公共)返回创建好的当前类对象 */ private SingleObject1(){} private static SingleObject1 sobj1 = null; //当在多线程情况下使用时为了保证当前类对象只有一个我们就需要添加“symchromized” public static synchronized SingleObject1 getSingleObject1(){ if(sobj1 == null){ sobj1 = new SingleObject1(); } return sobj1; } } public class Main { public static void main(String[] args) { SingleObject1 singleObject1 = SingleObject1.getSingleObject1(); SingleObject1 singleObject11 = SingleObject1.getSingleObject1(); if(singleObject1.equals(singleObject11)){ System.out.println(singleObject1); System.out.println(singleObject11); System.out.println("这个是同一个对象"); } } }
-
饿汉式(提前new好了)
public class SingleObject2{ private SingleObject2(){} private static SingleObject2 sobj = new SingleObject2(); public static synchronized SingleObject2 getSingleObject2(){ return sobj; } } public class Main { public static void main(String[] args) { SingleObject2 singleObject2 = SingleObject2.getSingleObject2(); SingleObject2 singleObject21 = SingleObject2.getSingleObject2(); if(singleObject2.equals(singleObject21)){ System.out.println(singleObject2); System.out.println(singleObject21); System.out.println("这个同一个对象"); } } }
懒汉式 | 饿汉式 |
---|---|
相同点:保证当前类的对象只有一个 | 保证当前类的对象只有一个 |
相同点:构造方法私有 | 构造方法私有 |
相同点:提供一个静态方法(公共)返回创建好相同点:的当前类对象 | 提供一个静态方法(公共)返回创建好的当前类对象 |
不同点:保存当前类的对象变量初始为null | 保存当前类的对象变量初始为new好的当前类对象 |
速度上:慢些 | 快些 |
资源上:好些 | 差些 |
推荐书籍:大话设计模式(java版)