- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单例模式介绍
1???? 单例(Singleton)模式:单例模式确保某一个类只有一个?实例,而且该类只能是自己?实例化自己并向其他类公开?这个实例的对象创建?模式
???? 采用单例模式的类:根据单例模式知道其要满足以下三点
???? 1. 确保某一个类只有一个实例
???? 2. 而且自己实例化
???? 3. 并向其他类提供这个实例类 。?2??? 确保以上三点的所采用的编程策略???? * 把构造方法声明为Private。确保只能由自己创建,避免外部创建实例或者被子类继承从而创造额外实例;??? * 定义一个私有静态的该类的实例作为该类的数据域。确保一个类只能有一个实例;??? *定义一个静态?工厂方法。外部类不能实例化一个该类的对象,所以只能用Static 的方法,提供给其他类调用,返回此单例类唯一的实例。3、使用单例模式的条件:???? 使用单例模式有一个必要条件:在一个系统要求一个类只有一个实例时才应当使用单例模式,反过来说,如果一个类可以有几个实例共存,那么就没有必要使用单例模式类。
4?? 单例在JAVA中的3种(一般形式)形式
主动式单例类:??? public class ActiveSingleton {??? ???
private static final?ActiveSingleton?m_instance = new?ActiveSingleton?();??? ??? //?在类加载的时候就实例化一个自己的对象???? ??? private?ActiveSingleton?() {??? ??? }???? //每次调用该工厂方法返回该实例??? ??? public static?ActiveSingleton?getInstance() {??? ??????? return m_instance;??? ??? }??? }? ?? java语言中单例类的一个最重要的特点是类的构造方法是私有的,从而避免外界利用构造子直接创建出任意多的实例。因为构造是私有的,因此此类不能被继承。主动式单例类在类加载的时候就实例化一个自己的对象。?被动式单例类:??? public class LazySingleton {??? ??? private static LazySingleton m_instance = null;??? ???? ??? private LazySingleton() {??? ??? }???? //静态工厂方法,?在第一次被调用时才将自己实例化???? ??? synchronized public static LazySingleton getInstance() {??? ??????? if (m_instance == null) {??? ??????????? m_instance = new LazySingleton();??? ??????? }??? ??????? return m_instance;??? ??? }??? }?与主动式单例类相同的是,被动式单例类的构造方法是私有的,不同的是在第一次被引用时才将自己实例化,如果加载器是静态的,那么在被动式单例类被加载时不会将自己实例化。???登记式单例类:??????? 登记式单例这个单例实际上维护的是一组单例类的实例(父类 和子类),将这些实例存放在一个Map(登记薄)中,对于已经登记过的实例,则从工厂直接返回,对于没有登记的,则先登记,而后返回。???? public class RegSingleton {??? ??? private static HashMap m_registry = new HashMap();??? ???? ??? static {??? ??????? RegSingleton x = new RegSingleton();??? ??????? m_registry.put(x.getClass().getName(), x);??? ??? }??? ???? protected RegSingleton() {??? ??? }??? ???? ??? public static RegSingleton getInstance(String name) {??? ??????? if (name == null) {??? ??????????? name = RegSingleton;??? ??????? }??? ??????? if (m_registry.get(name) == null) {??? ??????????? try
您可能关注的文档
最近下载
- 01J925 1 压型板屋面.PDF VIP
- 视听语言 镜头运动.pptx VIP
- 广州市白云区广大附中实验中学2022-2023学年上学期期中调研八年级物理问卷.docx VIP
- JB∕T 5317-2016 环链电动葫芦.pdf VIP
- 广东省广州市白云区广大附中实验中学2022-2023学年八年级上学期期末线上考试语文试卷.doc VIP
- 风电机组专项隐患排查治理记录表.doc VIP
- 风电机组专项隐患排查治理记录表自查.pdf VIP
- 工厂生产管理制度(3篇).docx VIP
- 广东省广州市白云区广大附中实验中学2023-2024学年八年级上学期月考数学试题.docx VIP
- 2024年五恒系统行业洞察报告及未来五至十年预测分析报告.docx
文档评论(0)