单例模式 忘是亡心i 2021-09-26 13:58 259阅读 0赞 单例模式Singleton: **意图**: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 **动机**: 对于一些类来说,只有一个实例是很重要的。虽然系统中可以由很多打印机,但是只有一个打印假脱机(print spooler),只应该有一个文件系统和一个窗口管理工具。一个数字滤波器也只能有一个A/D转换器。 **实现方式**: 让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建(即通过街区创建新对象的请求),并且它可以提供一个访问该实例的方法。 **使用场景**: * 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它。 * 当这个唯一实例应该是通过子类化可扩展的,并且客户无需更改代码就能使用一个扩展的实例时。 * 资源共享的情况下,避免由于资源操作时导致的性能或损耗等,如日志文件等。 * 控制资源的情况下,方便资源之间的互相通信。如线程池等。 **常见场景**: * windows的Recycle Bin(回收站)也是典型的单例应用。在整个系统运行过程中,回收站一直维护着仅有的一个实例。 * 应用程序的日志应用,一般都何用单例模式实现,这一般是由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。 * 多线程的线程池的设计一般也是采用单例模式,这是由于线程池要方便对池中的线程进行控制。 * Web应用的配置对象的读取,一般也应用单例模式,这个是由于配置文件是共享的资源。 **优点**: * 对唯一实例的受控访问,因为Singleton类封装它的唯一实例,所以它可能严格控制客户怎样以及何时访问它。 * 缩小命名空间 * 允许对操作和表示的精华 * 允许可变数目的实例 * 比类操作更灵活 示例代码: class SingleTon{ private static SingleTon instance = new SingleTon(); private SingleTon() { //构造函数为私有=>不能在其他类中使用new的方式构造SingleTon对象 // TODO Auto-generated constructor stub } public static SingleTon getInstance() { return instance; } private String name;//姓名 public String getName() { return name; } public void setName(String name) { this.name = name; } } class Multi{ public Multi() { // TODO Auto-generated constructor stub } private String name;//姓名 public String getName() { return name; } public void setName(String name) { this.name = name; } } public class SingleTonDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("单例模式"); SingleTon sTon1 = SingleTon.getInstance(); SingleTon sTon2 = SingleTon.getInstance(); sTon1.setName("HelloJomo"); System.out.println(sTon2.getName()); System.out.println(sTon1==sTon2); //对比实验 System.out.println("非单例模式"); Multi multi1 = new Multi(); Multi multi2 = new Multi(); multi1.setName("HelloJomo"); System.out.println(multi2.getName()); System.out.println(multi1==multi2); } } 实验结果: 单例模式 HelloJomo true 非单例模式 null false
相关 单例模式 http://blog.csdn.net/zhengzhb/article/details/7331369 定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实 曾经终败给现在/ 2022年09月25日 15:30/ 0 赞/ 188 阅读
相关 单例模式 class sigle{ protected static $ins = null; public function getIns(){ 深藏阁楼爱情的钟/ 2022年07月20日 20:27/ 0 赞/ 193 阅读
相关 单例模式 单例模式是一种常用的软件设计模式。 单例模式:保证一个类只有一个实例且实例易于外界访问; 单例模式的三个要点: 1.某个类只能有一个实例; 2.它必须自行创建 叁歲伎倆/ 2022年06月07日 06:13/ 0 赞/ 88 阅读
相关 单例模式 <table> <tbody> <tr> <td style="vertical-align:top;width:.6868in;"> <p style 矫情吗;*/ 2021年11月22日 10:52/ 0 赞/ 233 阅读
相关 单例模式 单例模式 单例模式(SingletonPattern)是java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及 红太狼/ 2021年11月16日 05:30/ 0 赞/ 253 阅读
相关 单例模式 应用场景 1. windows的任务管理器 2. 网站的计数器 3. 应用程序的日志 4. 数据库连接池,因为数据库连接是一种数据库资源。数据库软件系统中使用数据 r囧r小猫/ 2021年11月11日 15:08/ 0 赞/ 298 阅读
相关 单例模式 单例模式有以下特征: 1. 只有一个对象存在 2. 对象的实例化必须在类中实现 一、懒汉模式(线程不安全) package com.kevin; 谁借莪1个温暖的怀抱¢/ 2021年10月01日 07:48/ 0 赞/ 256 阅读
相关 单例模式 1.定义 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。 2.实现步骤 1. 将该类的构造方法定义为私有方法,这样其他处 小咪咪/ 2021年09月27日 13:56/ 0 赞/ 328 阅读
相关 单例模式 单例模式Singleton: 意图: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 动机: 对于一些类来说,只有一个实例是很重要的。虽然系统中可以由很多打印机 忘是亡心i/ 2021年09月26日 13:58/ 0 赞/ 260 阅读
相关 单例模式 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责 Dear 丶/ 2021年09月17日 02:10/ 0 赞/ 271 阅读
还没有评论,来说两句吧...