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

    设计模式--单例模式

    1、单例模式
      保证一个类仅有一个实例,并提供一个访问它的全局访问点

    2、单例模式的结构

    • 角色

        单例类(Singleton):只可以创建出一个实例

    • 类图:

        

    3、单例模式举例
    Singleton.java

    package com.nick.pattern.singleton;
    /**
    * 饿汉式单例模式
    * @author nick
    */
    public class Singleton {
      //JVM加载Singleton时就创建instance对象
      
    private static Singleton instance = new Singleton();   private Singleton(){     //设置构造方法的权限为private   }
      
    public static Singleton getInstance() {     return instance; //为外部类提供获得instance对象的方法
      
    } public void say(){     System.out.println("单例模式1");  }
    }

    Singleton2.java

    package com.nick.pattern.singleton;
    /**
    * 懒汉式单例模式
    * @author nick
    */
    public class Singleton2 {
      private static Singleton2 instance; //唯一的对象
    
      private Singleton2(){
        //构造方法设置为private权限
      }
    
      public static synchronized Singleton2 getInstance(){ //同步方法,避免多线程的问题
        if(instance == null){ 
          instance = new Singleton2();//只有对象对存在的时候,才会创建对象(懒汉式)
        }
        return instance;
      }
    
      public void say(){
        System.out.println("单例模式2");
      }
    }

    Application.java

    package com.nick.pattern.singleton;
    /**
    * 主程序
    */
    public class Application {
      public static void main(String[] args) {
        //Singleton s = new Singleton(); //error,不能创建新的对象
        Singleton s1 = Singleton.getInstance(); //只能把单例模式中创建好的对象赋值给s
        s1.say();
        Singleton2 s2 = Singleton2.getInstance();
        s2.say();
      }
    }

    运行结果:

      

    4、单例模式的优缺点
      优点:单例类的唯一实例由单例类本身来控制,所以可以很好的控制用户何时访问它。

  • 相关阅读:
    关于任意文件下载及上传漏洞
    一文掌握XSS
    WEB层知识点
    课程交流网站项目架构
    docker容器中启动uwsgi秒退
    mongoDB中update_one与find_one_update异同
    Vue集成CKEditor5源代码
    Vue的index.html与其他静态文件分离部署
    scrapy-redis分布式爬虫使用及docker swarm集群部署
    django中form组件的校验时raise ValidationError与self.add_error异同
  • 原文地址:https://www.cnblogs.com/sinlearn/p/11881430.html
Copyright © 2011-2022 走看看