博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
慕课网_《模式的秘密之单例模式》学习总结
阅读量:7111 次
发布时间:2019-06-28

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

时间:2017年08月27日星期日

说明:本文部分内容均来自慕课网。@慕课网:
教学源码:
学习源码:

第一章:单例模式简介

1-1 简介

单例模式

概念及应用场合饿汉模式懒汉模式饿汉模式与懒汉模式的区别

什么是设计模式

是一套被反复使用、多数人知晓的经过分类编目的、代码设计经验的总结

目的

使用设计模式是为了可重用代码让代码更容易被他人理解、保证代码可靠性

单例设计模式

有些对象我们只需要一个,比如:配置文件、工具类、线程池、缓存、日志对象等如果创造出多个实例,就会导致许多问题,比如占用过多资源,不一致到结果等保证整个应用中某个实例有且只有一个

第二章:单例模式实现

2-1 饿汉式实现

代码编写

1.编写Singleton类

package com.myimooc.designpattern.c1singleton;/** * @describe 单例模式Singleton-饿汉模式:当类被加载时,就创建实例 * 应用场合:有些对象只需要一个就足够了,古古代皇帝 * 作用:保证整个应用程序中某个实例有且只有一个 * 类型:饿汉模式、懒汉模式 * @author zc * @version 1.0 2017-08-27 */public class Singleton {        // 1.将构造方法私有化,不允许外部直接创建对象    private Singleton(){            }        // 2.创建类的唯一实例,使用private static    private static Singleton instance = new Singleton();        // 3.提供一个用于获取实例的方法,使用public static    public static Singleton getInstance(){        return instance;    }}

2.编写Test类

package com.myimooc.designpattern.c1singleton;public class Test {        public static void main(String[] args) {                // 饿汉模式        Singleton s1 = Singleton.getInstance();        Singleton s2 = Singleton.getInstance();        if( s1 == s2){            System.out.println("s1和s2是同一个实例");        }else{            System.out.println("s1和s2是不同一个实例");        }            }}

2-2 懒汉式实现

代码编写

1.编写Singleton2类

package com.myimooc.designpattern.c1singleton;/** * @describe 单例模式Singleton-懒汉模式:当用户获取的时候,才创建实例 * 应用场合:有些对象只需要一个就足够了,古古代皇帝 * 作用:保证整个应用程序中某个实例有且只有一个 * 类型:饿汉模式、懒汉模式 * @author zc * @version 1.0 2017-08-27 */public class Singleton2 {        // 1.将构造方法私有化,不允许外部直接创建对象    private Singleton2(){            }        // 2.创建类的唯一实例,使用private static    private static Singleton2 instance;        // 3.提供一个用于获取实例的方法,使用public static    public static Singleton2 getInstance(){        if(instance == null){            instance = new Singleton2();        }        return instance;    }}

2.修改Test类

package com.myimooc.designpattern.c1singleton;public class Test {        public static void main(String[] args) {                // 饿汉模式        Singleton s1 = Singleton.getInstance();        Singleton s2 = Singleton.getInstance();        if( s1 == s2){            System.out.println("s1和s2是同一个实例");        }else{            System.out.println("s1和s2是不同一个实例");        }                // 懒汉模式        Singleton2 s3 = Singleton2.getInstance();        Singleton2 s4 = Singleton2.getInstance();        if( s3 == s4){            System.out.println("s3和s4是同一个实例");        }else{            System.out.println("s3和s4是不同一个实例");        }    }}

第三章:饿汉懒汉区别

3-1 区别

区别

饿汉模式的特点是加载类时比较慢,但运行时获取对象的速度比较快,线程安全懒汉模式的特点是加载类时比较快,但运行时获取对象的速度比较慢,线程不安全

转载地址:http://pjwel.baihongyu.com/

你可能感兴趣的文章
通信协议中的转义字符【转】
查看>>
input 上报流程图
查看>>
cppcheck代码检测
查看>>
vs 2010 sn 序列号
查看>>
js获取下拉框的value值
查看>>
LeetCode OJ:Permutations(排列)
查看>>
云科技时代:阿里云创造者写了《在线》,这是一本怎样的书?
查看>>
PyQt5:常用控件
查看>>
WordPress部署踩坑记
查看>>
sublime-snippets 插件编写
查看>>
代码规范
查看>>
Leetcode | Length of Last Word
查看>>
2017.4.16关于在线图书商城注册界面总结
查看>>
HTML基础
查看>>
MyBatis初探
查看>>
线程和进程的区别
查看>>
[POI2008]Station
查看>>
王昆扬老师发来的材料:关于实数的构造
查看>>
[转] Javascript继承机制的设计思想
查看>>
夜间模式的开启与关闭,父模板的制作
查看>>