实例一:身份证号码 在现实生活中,居民身份证号码具有唯一性,同一个人不允许有多个身份证号码,第一次申请身份证时将给居民分配一个身份证号码,如果之后因为遗失等原因补办时,还是使用原来的身份证号码,不会产生新的号码。现使用单例模式模拟该场景

public class IdentityCardNo
{private static IdentityCardNo instance=null;private String no;private IdentityCardNo(){   }public static IdentityCardNo getInstance(){if(instance==null){System.out.println("第一次办理身份证,分配新号码!");instance=new IdentityCardNo();instance.setIdentityCardNo("No400011112222");       }else{System.out.println("重复办理身份证,获取旧号码!");  }return instance;}private void setIdentityCardNo(String no){this.no=no;}public String getIdentityCardNo(){return this.no;}}
public class Client
{public static void main(String a[]){IdentityCardNo no1,no2;no1=IdentityCardNo.getInstance();no2=IdentityCardNo.getInstance();System.out.println("身份证号码是否一致:" + (no1==no2));String str1,str2;str1=no1.getIdentityCardNo();str2=no1.getIdentityCardNo();System.out.println("第一次号码:" + str1);System.out.println("第二次号码:" + str2);System.out.println("内容是否相等:" + str1.equalsIgnoreCase(str2));System.out.println("是否是相同对象:" + (str1==str2));}
}

实例二:打印池 在操作系统中,打印池(Print Spooler)是一个用于管理打印任务的应用程序,通过打印池用户可以删除、中止或者改变打印任务的优先级,在一个系统中只允许运行一个打印池对象,如果重复创建打印池则抛出异常。现使用单例模式来模拟实现打印池的设计。

public class PrintSpoolerSingleton
{private static PrintSpoolerSingleton instance=null;private PrintSpoolerSingleton(){   }public static PrintSpoolerSingleton getInstance() throws PrintSpoolerException{if(instance==null){System.out.println("创建打印池!");instance=new PrintSpoolerSingleton();       }else{throw new PrintSpoolerException("打印池正在工作中!");}return instance;}public void manageJobs(){System.out.println("管理打印任务!");}
}
public class PrintSpoolerException extends Exception
{public PrintSpoolerException(String message) { super(message);}
}
public class Client
{public static void main(String a[]){PrintSpoolerSingleton ps1,ps2;try{ps1=PrintSpoolerSingleton.getInstance();ps1.manageJobs();   }catch(PrintSpoolerException e){System.out.println(e.getMessage());}System.out.println("--------------------------");    try{ps2=PrintSpoolerSingleton.getInstance(); ps2.manageJobs();      }catch(PrintSpoolerException e){System.out.println(e.getMessage());}}
}

软件设计模式之单例模式-----身份证号码---打印池相关推荐

  1. 软件设计模式之单例模式

    设计模式之单例模式 定义 保证一个类仅有一个实例,并提供一个全局访问点 类型 创建型 使用场景 想确保任何情况下都绝对只有一个实例 优点 在内存里只有一个实例,减少了内存开销. 可以避免对资源的多重占 ...

  2. 软件设计模式“单例模式”和“工厂模式”

    软件设计模式"单例模式"和"工厂模式" 单例模式 什么是单例模式 单例模式的实现方式有哪些 单例模式的优缺点 单例模式的应用场景 总结 工厂模式 什么是工厂模式 ...

  3. 软件设计模式—单例模式

    前篇--软件设计模式-基础 前篇--软件设计模式-三种工厂模式 前篇--软件设计模式-装饰者模式 单例模式是创建型模式 目录 1.定义及理解 1.1 定义 1.2 特点 1.3 类图 1.3.1结构说 ...

  4. 23种设计模式之单例模式、工厂模式、原型模式、建造者模式

    系列文章目录 第一章:程序设计原则-单一职责.接口隔离.依赖倒置.里式替换 第二章:程序设计原则-开闭原则.迪米特法则.合成复用原则 文章目录 系列文章目录 一.设计模式简单介绍 1.1.什么是设计模 ...

  5. C#设计模式(1)——单例模式

    原文地址:http://www.cnblogs.com/zhili/p/SingletonPatterm.html 一.引言 最近在设计模式的一些内容,主要的参考书籍是<Head First 设 ...

  6. 智能实验室-身份证号码查询(IDio) 1.4.0.140

    身份证号码查询(IDio)是用以根据身份证号码查找所属的省市区.出生年月日.性别等信息的工具. 特点: 1.准确及时:包括最新的行政区域信息: 2.地图定位:一键显示地区地图信息: 3.完全免费:我们 ...

  7. go设计模式之单例模式

    在这里插入图片描述# go设计模式之单例模式 在软件开发时,经常会遇到有些对象需要保证只有一个实例的,那么这种设计模式就应用而生. 定义 单例模式,也叫单子模式,是一种常用的软件设计模式,属于创建型模 ...

  8. 设计模式之单例模式——Singleton

                        设计模式之单例模式--Singleton 设计意图: 保证类仅有一个实例,并且可以供应用程序全局使用.为了保证这一点,就需要这个类自己创建自己的对象,并且对外有 ...

  9. 【系统架构设计师】软考高级职称,一次通过,倾尽所有,2016年下半年系统架构设计师考试论文真题(论述软件设计模式技术及应用)

    [系统架构设计师]软考高级职称,一次通过,倾尽所有,看完这篇就够了,学习方法和技巧这里全都有. 2016年下半年系统架构设计师考试论文真题(论述软件设计模式技术及应用) 论软件设计模式及其应用 软件设 ...

最新文章

  1. Exchange 2007邮件服务器
  2. 王兴:互联网化是企业家最大的机会
  3. javascript中json格式转为字符串
  4. udp java_Java实现Udp网络编程
  5. php生成图片验证码代码,PHP生成图片验证码以及点击切换的代码
  6. mdb文件取消隐藏_webshellphp隐藏技巧
  7. BZOJ 4754 [JSOI2016]独特的树叶 | 树哈希判同构
  8. python cookbook pdf java1234_[python书籍]Python.Cookbook(第2版)中文版.pdf
  9. Python 深度学习AI - 声音克隆、声音模仿、模拟特朗普声音唱《See You Again》,Real-Time-Voice-Cloning项目的安装与使用
  10. Linux服务与管理-step1
  11. 「算法学习」:求平方根
  12. 麒麟服务器系统磁盘管理之lvm管理
  13. 睿爸信奥-【临阵磨枪】练习赛(第二场)- T2
  14. Phonetic symbol 双元音 -- ɔɪ --(ɔi)
  15. 2年5个月13天,从外包到拿下阿里offer,没想到屌丝也能有今天
  16. 想爱,爱不了,想恨,恨不下,想忘,忘不了
  17. wen11家庭版开启Hper-V
  18. Java降落伞_javassist使用指南
  19. 06 项目准备独家秘笈
  20. AV多媒体管理控制中心,AV媒体矩阵

热门文章

  1. php安卓苹果打开自动分开,苹果、安卓手机投屏不掉线的两种设置方式
  2. email.class.php,利用PHP发送邮件Class类
  3. 基因序列比较 java实现
  4. Android Studio安装常见问题详解——Android Emulator Hypervisor Driver for AMD Processors installation failed.
  5. STM32串口IDLE中断
  6. A-the Beatles
  7. ext iconCls
  8. C语言动态数组的两种定义方式
  9. 设置scure CRT记录所有会话
  10. 计算机视觉:图片的灰度处理和颜色反转