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、单例模式的优缺点
      优点:单例类的唯一实例由单例类本身来控制,所以可以很好的控制用户何时访问它。

  • 相关阅读:
    2017年前端开发者应该重拾基本技能学习
    手机号码月消费档次API
    实用且免费API接口2
    在线文档转换API word,excel,ppt等在线文件转pdf、png
    火车票抢票API 根据乘客的车次与座席要求快速订票出票
    利用问答机器人API开发制作聊天类App
    用聚合数据API(苏州实时公交API)快速写出小程序
    OllyDbg使用笔记
    解决git commit 大文件推送失败
    每日一语
  • 原文地址:https://www.cnblogs.com/sinlearn/p/11881430.html
Copyright © 2011-2022 走看看