博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 设计模式 ---- 饿汉 , 懒汉
阅读量:5034 次
发布时间:2019-06-12

本文共 2229 字,大约阅读时间需要 7 分钟。

* 单例设计模式:保证类在内存中只有一个对象。

* 如何保证类在内存中只有一个对象呢?

* (1)控制类的创建,不让其他类来创建本类的对象。private
* (2)在本类中定义一个本类的对象。Singleton s;
* (3)提供公共的访问方式。 public static Singleton getInstance(){return s}
* 单例写法两种:
* (1)饿汉式 开发用这种方式。

* //饿汉式class Singleton {//1,私有构造函数private Singleton(){}//2,创建本类对象private static Singleton s = new Singleton();//3,对外提供公共的访问方法public static Singleton getInstance() {return s;}public static void print() {System.out.println("11111111111");}}* (2)懒汉式 面试写这种方式。多线程的问题?* //懒汉式,单例的延迟加载模式class Singleton {//1,私有构造函数private Singleton(){}//2,声明一个本类的引用private static Singleton s;//3,对外提供公共的访问方法public static Singleton getInstance() {if(s == null)//线程1,线程2s = new Singleton();return s;}public static void print() {System.out.println("11111111111");}}* (3)第三种格式* class Singleton {private Singleton() {}public static final Singleton s = new Singleton();//final是最终的意思,被final修饰的变量不可以被更改
/**     * @param args     * * 单例设计模式:保证类在内存中只有一个对象。     */    public static void main(String[] args) {        //Singleton s1 = new Singleton();                Singleton s1 = Singleton.s;                //成员变量被私有,不能通过类名.调用        //Singleton.s = null;        Singleton s2 = Singleton.s;                System.out.println(s1 == s2);            /*    Singleton s1 = Singleton.getInstance();        Singleton s2 = Singleton.getInstance();                System.out.println(s1 == s2);*/    }}/* * 饿汉式 class Singleton {    //1,私有构造方法,其他类不能访问该构造方法了    private Singleton(){}    //2,创建本类对象    private static Singleton s = new Singleton();    //3,对外提供公共的访问方法    public static Singleton getInstance() {                //获取实例        return s;    }}*//* * 懒汉式,单例的延迟加载模式 *//*class Singleton {    //1,私有构造方法,其他类不能访问该构造方法了    private Singleton(){}    //2,声明一个引用    private static Singleton s ;    //3,对外提供公共的访问方法    public static Singleton getInstance() {                //获取实例        if(s == null) {            //线程1等待,线程2等待            s = new Singleton();        }                return s;    }}*//* * 饿汉式和懒汉式的区别 * 1,饿汉式是空间换时间,懒汉式是时间换空间 * 2,在多线程访问时,饿汉式不会创建多个对象,而懒汉式有可能会创建多个对象 */class Singleton {    //1,私有构造方法,其他类不能访问该构造方法了    private Singleton(){}    //2,声明一个引用    public static final Singleton s = new Singleton();    }

 

转载于:https://www.cnblogs.com/yimian/p/6566019.html

你可能感兴趣的文章
mybatis中>=和<=的实现方式
查看>>
Python面向对象03/继承
查看>>
java序列化和反序列化
查看>>
绝对定位
查看>>
flink源码编译(windows环境)
查看>>
dpkg 删除 百度网盘 程序
查看>>
服务器nginx安装
查看>>
std::nothrow
查看>>
rest-framework 分页器
查看>>
JQuery(一)安装&选择器 样式篇
查看>>
浏览器的DNS缓存查看和清除
查看>>
浏览器跨域问题
查看>>
HTML5 input控件 placeholder属性
查看>>
使用JAVA如何对图片进行格式检查以及安全检查处理
查看>>
html5实现移动端下拉刷新(原理和代码)
查看>>
iPhone开发中从一个视图跳到另一个视图有三种方法:
查看>>
pytho logging
查看>>
一个Java程序员应该掌握的10项技能
查看>>
c#英文大小写快捷键
查看>>
tpframe免费开源框架又一重大更新
查看>>