zoukankan      html  css  js  c++  java
  • 设计模式----单例模式

    一、模式定义

      单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。

    二、分类

      (1)懒汉式:延迟加载方式。

      (2)饿汉式 :加载时就new出对象,线程安全,没有延时加载的优势。

    三、代码实现

      1.饿汉式单例(立即加载,线程安全)

     1 public class SingletonDemo1 {
     2     private static SingletonDemo1 instance = new SingletonDemo1();
     3     
     4     private SingletonDemo1(){
     5     
     6     }
     7     
     8     public static SingletonDemo1 getInstance(){
     9         return instance;
    10     }
    11 }

      2.懒汉式单例(延迟加载,使用synchronized同步锁保证只能创建一个实例,但是会降低效率,下一个线程想要获取对象,就必须等待上一个线程释放锁之后,才可以继续运行。)

     1 public class SingletonDemo2 {
     2     private static SingletonDemo2 instance;
     3     private SingletonDemo2(){
     4     
     5     }
     6     
     7     public static synchronized SingletonDemo2 getInstance(){
     8         if(instance==null){
     9             instance = new SingletonDemo2();
    10         }
    11         return instance;
    12     }
    13 }

      3.双重检测锁式(将同步内容放入到if内部,由于编译器优化原因和JVM底层内部模型原因偶尔会出问题,不建议使用)

      4.静态内部类式(懒加载:一开始不会初始化静态内部类,只有调用getInstance()时才初始化,类加载过程中天然线程安全,调用效率高)

     1 public class SingletonDemo3 {
     2     private static class SingletonClassInstance{
     3         private static final SingletonDemo3 instance = new SingletonDemo3();
     4     }
     5     
     6     private SingletonDemo3(){
     7         
     8     }
     9     
    10     public static SingletonDemo3 getInstance(){
    11         return SingletonClassInstance.instance;
    12     }
    13 }

      5.枚举单例

     1 class Resource{
     2 }
     3  
     4 public enum SomeThing {
     5     INSTANCE;
     6     private Resource instance;
     7     SomeThing() {
     8         instance = new Resource();
     9     }
    10     public Resource getInstance() {
    11         return instance;
    12     }
    13 }
  • 相关阅读:
    软工第二次作业-集成部署入门
    软工第一次作业
    使用RVM安装特定版本Ruby和Rails
    神奇的位操作(Bit Manipulation)
    多数投票算法——Boyer–Moore majority vote algorithm
    朝花夕拾,温故知新——提问回顾与个人总结
    获得“小黄衫”の 感言
    结对编程纪实
    决胜笔记之巅——案例分析
    工欲善其事——2021软工第二次博客作业
  • 原文地址:https://www.cnblogs.com/blzm742624643/p/9962002.html
Copyright © 2011-2022 走看看