设计模式--单例模式

喜欢而已 提交于 2019-12-04 20:18:04

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

2、单例模式的结构

角色

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

类图:

3、单例模式举例
Singleton.java

1 package com.nick.pattern.singleton;
2 /**
3 * 饿汉式单例模式
4 * @author nick
5 */
6 public class Singleton {
7 ​
8 //JVM加载Singleton时就创建instance对象
9 private static Singleton instance = new Singleton();
10
11 private Singleton(){
12 //设置构造方法的权限为private
13 }
14
15 public static Singleton getInstance() {
16 return instance; //为外部类提供获得instance对象的方法
17 }
18
19 public void say(){
20 System.out.println("单例模式1");
21 }
22 }
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、单例模式的优缺点
  优点:单例类的唯一实例由单例类本身来控制,所以可以很好的控制用户何时访问它。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!