发布于2021-07-24 21:32 阅读(803) 评论(0) 点赞(9) 收藏(3)
03月11日 晴天 继续放弃中,爱下不下
所在培训机构有这么一个传统,午休之后到14点半上课间,有30分钟的学生演讲时间,听蔡班主的意思,演讲目的是锻炼我们口才,应对毕业后的面试。我是奇了个怪啦,班上90多号人,2天休一天来算,毕业就轮2圈,2次演讲就能锻炼口才了?估摸着我们都是演讲奇才吧。
今天轮到我演讲了,本来可以用固定主题:我的家乡,最后想想还是算了,就讲一下当初应对软考学得的设计模式:单例设计模式吧。
上台前,说不紧张还是有点假,毕竟这么多人,能讲利索就可以啦,我给自己的订的最低要求。如果能得到满堂彩,那最好,哈哈,想想就好了。
上台后,再来一次自我介绍,然后进入正题:单例设计模式讲解
我:单例设计模式,顾名思义就是一个类有且仅有一个实例对象。根据代码实现方式不同分为:饿汉式,懒汉式,静态内部类方式,枚举方式。
饿汉式:
- public class Singleton {
- //饿汉式单例
- private static Singleton instance = new Singleton();
- private Singleton(){}
-
- public static Singleton getInstance(){
- return instance;
- }
- }
问:为啥叫饿汉呢?
答:你肚子饿了,你最想做啥,吃啊,很饿很饿时候,是不是迫不及待想去吃。饿汉式就是迫不及待想创建出一个单例出来。所以在类加载进内存马上就构建出这个唯一单例。
问:为什么使用private修饰构造器
答:单例模式,有且只有一个实例,构造器私有目的就是禁用外界对实例构建。
问:饿汉式单例模式好处是啥?
答:简单,方便,还线程安全。
懒汉式:
- public class LazySingleton {
- private static LazySingleton lazySingleton = null;
- private LazySingleton() {
- }
- public static LazySingleton getInstance() {
- if (lazySingleton == null) {
- lazySingleton = new LazySingleton();
- }
- return lazySingleton;
- }
- }
问:为啥叫懒汉呢?
答:懒得动的意思啊,能不动就不动。懒汉式单例操作是在获取唯一单实例时才进行实例创建。
问:懒汉式单例模式好处是啥?
答:没啥特别的好处,硬要说就是延时实例的创建,另外操作不好,还会有线程安全问题。
问:标准的懒汉式单例模式长啥样?
答:双重检查方式
- public class Singleton {
- private volatile static Singleton instance;
- private Singleton() {}
- public static Singleton newInstance() {
- if (instance == null) {
- synchronized (Singleton.class) {
- if (instance == null) {
- instance = new Singleton();
- }
- }
- }
- return instance;
- }
- }
静态内部类:
- public class Singleton {
- private static class SingletonInstance{
- private static final Singleton instance=new Singleton();
- }
- private Singleton(){}
- public static Singleton getInstance(){
- return SingletonInstance.instance;
- }
-
- }
问:为啥叫静态内部类呢?
答:使用内部类的形式实现。
问:有啥好处啊?
答:线程安全的,有延时加载的效果,只有当调用getInstance方法时候才会加载内部类创建对象。
枚举:
- public enum Singleton {
- INSTANCE;
- }
问:简单粗暴,这是啥原理
答:没啥原理,枚举定义出来后,实例个数就固定了,如果约定它实例只有1个,那就是单例啦
问:有啥好处啊?
答:线程安全,调用效率高,可以天然的防止反射和反序列化调用
问:反射跟反序列是啥
答:我也不知道,后面会学
综合看,推荐使用静态内部的方式,贪方便,就使用枚举方式。
一曲终了,附和者甚少,唉,这该死的孤独~
原文链接:https://blog.csdn.net/langfeiyes/article/details/118878418
作者:雨还没有下
链接:http://www.pythonpdf.com/blog/article/273/5b13219ce71c2487b5b3/
来源:编程知识网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!