Java设计模式之单例设计模式-阿里云开发者社区

开发者社区> 黑泽明军> 正文

Java设计模式之单例设计模式

简介: Java设计模式之单例设计模式 /* 设计模式:对问题行之有效的解决方式。其实它是一种思想。 单例设计模式。(单个实例、单态) 解决的问题:可以保证一个类在内存中的对象唯一性。 必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。
+关注继续查看

Java设计模式之单例设计模式

/*
设计模式:对问题行之有效的解决方式。其实它是一种思想。

单例设计模式。(单个实例、单态)
    解决的问题:可以保证一个类在内存中的对象唯一性。
    必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。

    如何保证对象唯一性呢?
        1,不允许其他程序用new创建该类对象。这样做的好处:可以避免产生更多对象。(别人创建的类不好控制)
        2,在该类创建一个本类实例。(自己创建的类可以好控制)
        3,对外提供一个方法让其他程序可以获取该对象。

    解决对象唯一性的步骤:
        1,私有化该类构造函数。(这样别人就不能new了)
        2,通过new在本类中创建一个本类对象。
        3,定义一个公有的方法,将创建的对象返回。

*/
/*
    不能创建对象,但是还要去获取对象,
    对象的方法被调用有两种方式:
        1、通过对象调用。
        2、通过类名调用。但是类名调用有前提,公有的方法必须是静态,而静态访问的内容必须是静态的。
*/

//饿汉式
class Single    //类一加载,对象就已经存在了。
//立即加载形式
{
    private static Single s = new Single(); //创建一个本类的对象。
    //成员变量一般不会暴露出去,故用private,即私有化,是为了可控;可以通过"方法"来访问,有了方法就有了可控的可能,里面可以加一些限制条件。

    private Single(){} //私有化该类构造函数。

    public static Single getInstance() //对外提供一个本类的返回对象。getInstance:“获取实例”
    {
        return s;
    }
}

//懒汉式需要重点掌握,面试需要用。
//懒汉式,缺点:多线程技术,当多线程并发访问时,有可能保证不了对象的唯一性,即存在安全隐患。
class Single2    //类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象。
//延迟加载形式。
{
    private static Single2 s = null;

    private Single2(){}

    public static Single2 getInstance()
    {
        if(s == null)
            s = new Single2();
            
        return s;
    }
}

 

我的GitHub地址:https://github.com/heizemingjun
我的博客园地址:http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址:http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
设计模式之单例模式
设计模式之单例模式 一般情况下一个类能否做成单例,就在于,这个类在整个应用中,同一时刻有且只有一种状态。 第一种单例模式的构造方式。 public class Singleton{ //一个静态的实例 private static Singleton singleton; //私有化构造函数 private Singleton(){
783 0
IOS设计模式第二篇之单例设计模式
现在我们的组件已经有组织了。你需要从其他的地方得到数据,你也可以创建一个API类管理数据这个下个设计模式单例里面介绍。 这个单例设计模式确保这个类仅仅拥有一个实例,并且为这个实例提供一个全局的访问点。
819 0
Java单例模式,看这一篇就够了
单例模式总结,各种实现,各种破坏~
99 0
Java高新技术2--JAVA中枚举的各种应用以及单例模式
  在C/C++中枚举是一种构造数据类型 ,在java中枚举的实质是一个类  但是默认是没有构造方法的 但是我们可以为其添加构造方法 但是必须是私有的 .方法列表要在元素列表之下  。 其实在 Java类中定义枚举就是定义内部类   . 内部类和外部类 根据权限的不同 访问修饰符也不一样。
716 0
带你读《Java程序设计与计算思维》之一:计算思维与Java设计初步体验
程序设计的过程就是一种计算思维的表现,《Java程序设计与计算思维》结合Java程序设计语言的教学特点,遵循计算思维的方式,图解重要概念,通过大量的范例程序讲解和上机编程实践来指导读者活用Java程序语法,兼顾培养计算思维和学习面向对象程序设计的双目标。
871 0
c# 设计模式之单例模式学习
c#的设计模式有很多种,当然也可以说语言的设计模式有很多种(23种),单例模式应该是其中最简单的一种,但是不要因为简单而小看他,否则最后后悔的肯定是你 单例模式包括懒汉模式(还有多线程下的锁定)、恶汉模式 下面写一下饿汉模式的实现原理:  public Class Singleton { ...
928 0
+关注
黑泽明军
斯人若彩虹,遇上方知有。
412
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载