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

  • 相关阅读:
    第十二周学习进度条
    课堂练习四
    搜狗输入法
    第十一周学习进度条
    《代码大全(第二版)》阅读笔记01
    典型用户及用户场景描述
    第十周学习进度条
    团队冲刺第六天
    团队冲刺第五天
    团队冲刺第四天
  • 原文地址:https://www.cnblogs.com/sinlearn/p/11881430.html
Copyright © 2011-2022 走看看