Static 单例模式】的更多相关文章

Static 方法的问题 今天在看EhCache源码的时候,发现有一个这样的方法   这个是个典型的单例模式的工具类,但我所知道的单例模式的写法不是这样的,虽然<effect java>中推荐的方法是用枚举,static方法类似于枚举方法,但觉得这种单例模式确实值得学习学习.   看我的测试结果: 总共两个类 /** * 测试单例类 * @author wu * */ public class StaticClass {          public static Integer id =…
前段时间在android手机系统上开发一个小东西,先介绍一下他吧: 就是当手指点击屏幕不论什么地方的时候会出现点击的特效,就是在你点击屏幕的地方会出现各种效果,比方:雪花纷飞;出现五彩的肥皂泡:鲜花盛开等等! 这里我把这个效果给一个名字:魔法手指. 兴许我会在撰写一篇博客来叙述怎样实现的!今天这里主要说一下开发中遇到的一个问题. 因为,我的这个效果的实现是在不论什么界面,也就是说在不论什么activity(不论什么app), 并且还能够通过手机设置里面来设置不同的点击特效! 或者开启"魔法手指&…
设计模式概念 1.1 什么是设计模式 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路.它不是语法规定,而是一套用来提高代码可复用性.可维护性.可读性.稳健性以及安全性的解决方案. 1995 年,GoF(Gang of Four,四人组/四人帮)合作出版了<设计模式:可复用面向对象软件的基础>一书,共收录了 23 种设计模式,从此树立了软件设计模式领域的里程碑,人称「GoF设计模式」. 这 23 种设计模式的本质是面向对象设计原则的实际运用,是对…
对于特定类型的全体对象而言,有时候可能需要访问一个全局的变量.比如说统计某种类型对象已创建的数量.如果我们用全局变量会破坏数据的封装,一般的用户代码都可以修改这个全局变量,这时我们可以用类的静态成员来解决这个问题. 静态成员和静态成员函数在使用时可以直接用类名加域运算符使用.也可以用对象.的方法(即使这样也不会传递this指针给非静态成员函数),但不推荐,因为这样容易产生歧义,实际上他们并不相关.     static成员在类体内的仅仅是引用性声明,不允许初始化!必须在类定义体外进行定义性声明与…
一.static关键字 1.1.static关键字 静态:static用法:是一个修饰符,用于修饰成员(成员变量,成员函数)static 修饰的内容,所有对象共享当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以被类名.静态成员 package com.day06; /** * 人类 * @author Administrator *静态:static *用法:是一个修饰符,用于修饰成员(成员变量,成员函数) *static 修饰的内容,所有对象共享 *当成员被静态修饰后,就多…
C# 的static与单例模式 static是静态对象,在类被第一次使用,或者第一次被实例化时执行 /// <summary> /// 线程安全的单件模式 /// </summary> public sealed class StaticCustomer { private static volatile IList<Customer> instance = null; // Lock对象,线程安全所用 private static object syncRoot =…
单例模式的static方法和非static方法是否是线程安全的? 答案是:单例模式的static方法和非static方法是否是线程安全的,与单例模式无关.也就说,如果static方法或者非static方法不是线程安全的,那么不会因为这个类使用了单例模式,而变的安全. 闲话休说,看代码: import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class TestSingl…
近期用sonar測评代码质量的时候,发现一个问题,project中一些util类,曾经写的static方法都提示最好用单例的方式进行改正. 为此,我细致想了想,发现还是非常有道理的.这里谈谈我个人对static方法与单例模式的理解. 所谓单例模式,我不做过多解释,推荐java设计模式之禅这本书,好好理解一下. 这里我谈谈两种写法: 曾经一些公共的类,我不假思索,习惯依照例如以下写法去写: public class DateUtil { public final static String DAT…
单例模式是应用最多的一种设计模式,它要求系统中每个类有且只能有一个实例对象. 主要优点: 1.提供了对唯一实例的受控访问. 2.由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能. 3.允许可变数目的实例. 主要缺点: 1.由于单利模式中没有抽象层,因此单例类的扩展有很大的困难. 2.单例类的职责过重,在一定程度上违背了"单一职责原则". 3.滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可…
类构造块 在类只用一对大括号包含的内容,构造所有的对象时都会执行的内容,如果某个类有好几个够赞函数,公共部分抽取出来,放到构造块中. clas Boy { ... { syso("哭..."); } ... } 主要作用: 一个类可能重载了很多的构造函数,这时不同的构造函数有些内容是公共的,这时需要把公共的内容分离出来省的每个构造函数厘里面都写一遍,这时就可以使用类构造块. this() 这时一种在内部调用自己的空构造函数的做法.注意构造函数之间的相互调用必须放在构造函数里面的第一句话…
首先了解static 关键字 static声明的方法是静态方法,static声明的成员变量为静态成员变量.对于该类的所有对象来说,static的成员变量和static只有一份存储空间 即使没有创建该类的对象(实列),也可以使用该类static的成员变量和static方法. static所修饰的成员变量和静态代码块 当虚拟机对该类初始化的时候就会被创建,也就是 即使没有创建这个类的实列,java虚拟机也能根据类名在运行时数据区的方法内找到他们.(也就是说类的初始化和创建类的实列并不是一回事) 静态…
static小结 static的引入 static 是C++中非经常常使用的修饰符,它被用来控制变量的存储方式和可见性. 函数内部定义的变量,在程序运行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数运行结束时会释放掉,这样就产生了一个问题:假设想将函数中此变量的值保存至下一次调用时.怎样实现? 最easy想到的方法是定义一个全局的变量.但定义为一个全局变量有很多缺点,最明显的缺点是破坏了此变量的訪问范围(使得在此函数中定义的变量.不只受此函数控制).而static变量能够…
一.static 与单例模式 单例模式也就是简单的一种设计模式,它需要: 保证一个类只有一个实例,并提供一个全局访问点 禁止拷贝  C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43   #include <iostream> using namespace std; class Sing…
基于上一个实验Banking_5 ,代码先全部复制过来. 笔记心得: 1.SavingAccount() 需要两种构造方法,接受单个参数和两个的 2.Account 有两个类型 SavingAccount 和 CheckingAccount ,每个人都有两个或一个 , setAccount(Account account,int id) ,id=1 表示设置前者, id=2表示设置后者. 3.在 public class CustomerReport{}中 ,首先调用static Bank :…
static 那天我朋友问了我个问题,static和单例模式有什么区别,所以我觉得static可以讲一下 他的问题是,把对象弄成static是不是就不变了 显然,这是还没弄清楚引用和对象的区别 其实存放在静态区中的是引用,而不是对象.而对象是存放在堆中的.如果有这样一句话 public static final Book book = new Book(); 意思就是book这个引用,指向了这个new出来的对象. static的引用和正常的引用有什么区别? 当你加载了这个类的时候(第一次使用这个…
Java 静态static关键字,静态代码块详情参考:static的使用原理讲解http://www.cnblogs.com/itcqx/p/5519464.html main函数: java MainDemo:将MainDemo类传入给虚拟机,启动虚拟机执行编译一个类的同时传入参数,java MainDemo hah he 将类后面跟入的数据已空格的格式区分自动存入数组当中. /* public static void main(String[] args) 主函数:是一个特殊的函数.作为程序…
一:之前旧的写法 class Singleton{ private Singleton() {} private static Singleton instance = null; public synchronized static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } 就利用Sington.getInstace就可以了,获得的是同…
饿汉模式 饿汉模式就是立即加载,在方法调用前,实例就已经被创建了,所以是线程安全的. public class MyObject1 { private static MyObject1 myObject1 = new MyObject1(); private MyObject1() {} public static MyObject1 getInstance() { return myObject1; } } 懒汉模式 懒汉就是延迟化加载,当需要使用的时候才进行实例化. 线程不安全 public…
使用前提: 需要频繁的进行创建和销毁的对象,创建对象时耗时过多或耗费资源过多 三要素: 1.构造方法私有化: 2.实例化的变量引用私有化: 3.获取实例的方法共有. 1.饿汉式单例 弊端:在类装载的时候就完成实例化 /** * 饿汉式单例 * * @author Wonder * @history create Wonder 2018年10月24日 上午9:55:32 * @version 1.0 */ public class Singleton1 { private Singleton1()…
main函数 主函数是一个特殊的函数,作为程序的入口,可以被jvm(虚拟器)调用 主函数的定义 public 表示该函数的访问权限是最大的. static 代表主函数随着类的加载就已经存在了. void 主函数没有具体的返回值. main 不是关键字,但是是一个特殊的单词,但是可以被jvm识别. 参数(String[] args) 参数的类型是一个数组,该数组的元素是String args 参数名,所以可以改,args 全称arguments. 主函数是固定格式的,为了使jvm识别. jvm在调…
当需要共享的变量很多时,使用static变量占用内存的时间过长,在类的整个生命周期. 而对象只是存在于对象的整个生命周期.   //饿汉式 class Single//类一加载,对象就已经存在了. { private static Single s = new Single(); private Single(){} public static Single getInstance() { return s; } }   //懒汉式 class Single2//类加载进来,没有对象,只有调用了…
1.类的构造器私有化 2.本类内部创建对象(用本类内部public static静态方法返回该静态对象) 3.创建静态变量指向该类. 饿汉式和懒汉式的差异: 1.创建对象的时机不同!(饿汉模式在使用静态类时创建加载对象:懒汉模式在静态方法时加载创建对象) 2.应用场合不同 如果仅仅考虑效率问题,可以使用懒汉式 如果考虑线程安全问题,可以使用饿汉式(懒汉式容易出现数据错乱问题) /** * 此类用于演示单例设计模式 * 步骤: * 1.构造器私有化 * 2.本类内部创建对象 * 3.提供publi…
作用:只产生一个对象 1 class Yoshi { 2 public: 3 //外界只能通过这种方式调用这一个对象,返回必须是引用 4 static Yoshi& getInstance(){return yoshi;} 5 //setup(); 6 private: 7 //两个构造函数 8 Yoshi(); 9 Yoshi(const Yoshi& rhs); 10 //只创建一个对象,必须是静态的 11 static Yoshi yoshi; 12 }; 上述写法存在一个小问题:…
在某些应用环境下面,一个类只允许有一个实例,这就是著名的单例模式.单例模式分为懒汉模式,跟饿汉模式两种. 首先给出饿汉模式的实现 template <class T> class singleton {protected: singleton(){}; private: singleton(const singleton&){};//禁止拷贝 singleton& operator=(const singleton&){};//禁止赋值 static T* m_inst…
一.单例模式的介绍 单例模式简单说就是掌握系统的至高点,在程序中只实例化一次,这样就是单例模式,在系统比如说你是该系统的登录的第多少人,还有数据库的连接池等地方会使用,单例模式是最简单,最常用的模式之一,面试经常会问答,所以我们在程序考虑什么地方会用到单例模式,单例模式写法有很多种,这里我下面列举2种写法很普遍的写法,然后做个多线程计数的例子大家来理解一下单例模式的用法. 二.单例模式Demo /// <summary>    /// 利用C#的特性单例模式    /// </summa…
前言:最近看完<java多线程编程核心技术>一书后,对第六章的单例模式和多线程这章颇有兴趣,我知道我看完书还是记不住多少的,写篇博客记录自己所学的只是还是很有必要的,学习贵在坚持. 单例模式,也就是一个类只有一个实例,任何对象要访问这个类只能通过这个实例对象来访问,我们把房子比喻一个java类,每个房子只有一把钥匙(好比每个类只有一个实例),这样唯有房子的主人才有这个钥匙才能访问房子,其他人访问不了. 我们来看一下怎么写一个单例模式的java代码,方法有很多种: 1.立即加载(也叫饿汉模式)…
单例模式 代码: 第一种: private static Singleton singleton = null; private Singleton() { } public static Singleton GetInstance { get { if (singleton == null) { singleton = new Singleton(); } return singleton; } } 第二种: public class Singleton { private static re…
设计模式之单例模式(Singleton) 设计模式是前辈的一些经验总结之后的精髓,学习设计模式可以针对不同的问题给出更加优雅的解答 单例模式可分为俩种:懒汉模式和饿汉模式.俩种模式分别有不同的优势和缺点 懒汉模式 class Singleton{ private static Singleton instance = new Singleton(); private test(){ } public static test getInstance(){ return instance; } }…
·核心作用: -保证一个类只有一个实例,并且提供一个访问该实例的全局访问点. ·常见应用场景: -Windows的Task Manager(任务管理器)就是很典型的单例模式 -Windows的Recycle Bin(回收站)也是很典型的单例应用.在整个系统运行过程中,回收站一直维护着仅有的一个实例 -项目中,读取配置文件的类,一般也只有一个对象.没有必要每次使用配置文件数据,每次new一个对象去读取 -网站的计数器,一般也是采用单例模式实现,否则难以同步 -应用程序的日志应用,一般都采用单例模式…
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经作者同意必须保留此段声明!如有问题请联系我,侵立删,谢谢! 我的博客:http://www.cnblogs.com/GJM6/  -  传送门:[点击前往] 一.引言 主要的参考书籍是<Head First 设计模式>.首先我介绍的是设计模式中比较简单的一个模式--单例模式(因为这里只牵涉到一个类…