Java单例模式和多例模式实例分析

 更新时间:2019年07月30日 09:49:01   作者:cakincqm  
这篇文章主要介绍了Java单例模式和多例模式,结合实例形式分析了java单例模式与多例模式的定义及使用技巧,需要的朋友可以参考下

本文实例讲述了Java单例模式和多例模式。分享给大家供大家参考,具体如下:

一 单例模式

1 代码

class Boss
{
  private static Boss instance;// 静态成员变量,用来保存唯一创建的对象实例
  private Boss ()
  {
    // 利用私有化构造方法,阻止外部创建对象
  }
  public static Boss findBoss() //检查并确保只有一个实例
  {
    if (instance == null)
    {
      System.out.println("当前没有老板,马上指派一个!");
      instance = new Boss();
    } else {
      System.out.println("已经有老板了!直接来汇报吧。");
    }
    return instance;
  }
}
public class Singleton
{
  public static void main(String[] args)
  {
    Boss boss1 = null; // 声明对象boss1
    Boss boss2 = null; // 声明对象boss2
    boss1 = Boss.findBoss();//实例化对象
    boss2 = Boss.findBoss();//实例化对象
  }
}

2 运行

当前没有老板,马上指派一个!
已经有老板了!直接来汇报吧。

二 多例模式

1 代码

// 枚举类
enum Sex {
  男性, 女性
};
class sexClass {
  private String title; // 保存信息
  private static final sexClass MALE = new sexClass("男");
  private static final sexClass FEMALE = new sexClass("女");
  private sexClass( String title ) //私有构造方法
  {
    this.title = "创造的对象性别为: " + title;
    System.out.println("构造函数"+title);
  }
  public static sexClass getInstance( Sex sex )//static方法
  {
    switch (sex) {
      case 男性:
        return MALE;
      case 女性:
        return FEMALE;
      default:
        return null;
    }
  }
  @Override
  public String toString() {
    return this.title;
  }
}
public class TestMultiton {
  public static void main( String args[] ) {
    System.out.println(sexClass.getInstance(Sex.男性)); // 如果把这句也注释上,则输出结果为空,体现出赖加载(用时才加载该类)
    //System.out.println(sexClass.getInstance(Sex.女性));
  }
}

2 运行

构造函数男
构造函数女
创造的对象性别为: 男

3 说明

多例设计模式,实际就是“单例设计模式”的扩展版。设计思想和实现步骤都非常类似。

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • Java即将引入新对象类型来解决内存使用问题

    Java即将引入新对象类型来解决内存使用问题

    这篇文章主要介绍了Java即将引入新对象类型来解决内存使用问题,文章通过围绕主题的相关资料展开详细内容,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • Hibernate单表操作实例解析

    Hibernate单表操作实例解析

    这篇文章主要介绍了Hibernate单表操作实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • 详细聊聊Mybatis中万能的Map

    详细聊聊Mybatis中万能的Map

    最近有个需求,就是使用mybatis时,向mysql中插入数据,其参数为map类型,下面这篇文章主要给大家介绍了关于Mybatis中万能的Map的相关资料,需要的朋友可以参考下
    2021-12-12
  • Maven项目引用第三方jar包找不到类ClassNotFoundException

    Maven项目引用第三方jar包找不到类ClassNotFoundException

    这篇文章主要为大家介绍了Maven项目引用第三方jar包找不到类ClassNotFoundException解决及原因分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Netty学习教程之基础使用篇

    Netty学习教程之基础使用篇

    Netty是由JBOSS提供的一个Java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。下面这篇文章主要给大家介绍了关于Netty基础使用的相关资料,需要的朋友可以参考下。
    2017-05-05
  • 关于Java下奇怪的Base64详解

    关于Java下奇怪的Base64详解

    这篇文章主要给大家介绍了关于Java下奇怪的Base64的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • java 反射getClass .class 的使用方法示例

    java 反射getClass .class 的使用方法示例

    这篇文章主要介绍了java 反射getClass .class 的使用方法,结合实例形式分析了java类反射机制的相关操作技巧,需要的朋友可以参考下
    2019-11-11
  • MyBatis-Plus结合Layui实现分页方法

    MyBatis-Plus结合Layui实现分页方法

    MyBatis-Plus 使用简单,本文主要介绍使用 service 中的 page 方法结合 Layui 前端框架实现分页效果,具有一定的参考价值,感兴趣的可以了解一下
    2021-08-08
  • SpringBoot基于redis自定义注解实现后端接口防重复提交校验

    SpringBoot基于redis自定义注解实现后端接口防重复提交校验

    本文主要介绍了SpringBoot基于redis自定义注解实现后端接口防重复提交校验,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Mac Maven环境搭建安装和配置超详细步骤

    Mac Maven环境搭建安装和配置超详细步骤

    这篇文章主要给大家介绍了关于Mac Maven环境搭建安装和配置的超详细步骤,Maven是一种常用的Java构建工具,它可以自动化构建、测试和打包Java项目,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-10-10

最新评论