本站消息

  出租广告位,需要合作请联系站长

  今日名言-想象你自己对困难作出的反应,不是逃避或绕开它们,而是面对它们,同它们打交道,以一种进取的和明智的方式同它们奋斗 。——马克斯威尔·马尔兹

  今日名言-用谅解、宽恕的目光和心理看人、待人。人就会觉得葱笼的世界里,春意盎然,到处充满温暖。——蔡文甫


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

记一篇IT培训日记027-课间演讲

发布于2021-07-24 21:32     阅读(803)     评论(0)     点赞(9)     收藏(3)


03月11日   晴天    继续放弃中,爱下不下

        所在培训机构有这么一个传统,午休之后到14点半上课间,有30分钟的学生演讲时间,听蔡班主的意思,演讲目的是锻炼我们口才,应对毕业后的面试。我是奇了个怪啦,班上90多号人,2天休一天来算,毕业就轮2圈,2次演讲就能锻炼口才了?估摸着我们都是演讲奇才吧。

        今天轮到我演讲了,本来可以用固定主题:我的家乡,最后想想还是算了,就讲一下当初应对软考学得的设计模式:单例设计模式吧。

        上台前,说不紧张还是有点假,毕竟这么多人,能讲利索就可以啦,我给自己的订的最低要求。如果能得到满堂彩,那最好,哈哈,想想就好了。

       上台后,再来一次自我介绍,然后进入正题:单例设计模式讲解

        我:单例设计模式,顾名思义就是一个类有且仅有一个实例对象。根据代码实现方式不同分为:饿汉式,懒汉式,静态内部类方式,枚举方式。

饿汉式:

  1. public class Singleton {
  2. //饿汉式单例
  3. private static Singleton instance = new Singleton();
  4. private Singleton(){}
  5. public static Singleton getInstance(){
  6. return instance;
  7. }
  8. }

问:为啥叫饿汉呢?

答:你肚子饿了,你最想做啥,吃啊,很饿很饿时候,是不是迫不及待想去吃。饿汉式就是迫不及待想创建出一个单例出来。所以在类加载进内存马上就构建出这个唯一单例。

问:为什么使用private修饰构造器

答:单例模式,有且只有一个实例,构造器私有目的就是禁用外界对实例构建。

问:饿汉式单例模式好处是啥?

答:简单,方便,还线程安全。

懒汉式:

  1. public class LazySingleton {
  2. private static LazySingleton lazySingleton = null;
  3. private LazySingleton() {
  4. }
  5. public static LazySingleton getInstance() {
  6. if (lazySingleton == null) {
  7. lazySingleton = new LazySingleton();
  8. }
  9. return lazySingleton;
  10. }
  11. }

问:为啥叫懒汉呢?

答:懒得动的意思啊,能不动就不动。懒汉式单例操作是在获取唯一单实例时才进行实例创建。

问:懒汉式单例模式好处是啥?

答:没啥特别的好处,硬要说就是延时实例的创建,另外操作不好,还会有线程安全问题。

问:标准的懒汉式单例模式长啥样?

答:双重检查方式

  1. public class Singleton {
  2. private volatile static Singleton instance;
  3. private Singleton() {}
  4. public static Singleton newInstance() {
  5. if (instance == null) {
  6. synchronized (Singleton.class) {
  7. if (instance == null) {
  8. instance = new Singleton();
  9. }
  10. }
  11. }
  12. return instance;
  13. }
  14. }

静态内部类:

  1. public class Singleton {
  2. private static class SingletonInstance{
  3. private static final Singleton instance=new Singleton();
  4. }
  5. private Singleton(){}
  6. public static Singleton getInstance(){
  7. return SingletonInstance.instance;
  8. }
  9. }

问:为啥叫静态内部类呢?

答:使用内部类的形式实现。

问:有啥好处啊?

答:线程安全的,有延时加载的效果,只有当调用getInstance方法时候才会加载内部类创建对象。

枚举:

  1. public enum Singleton {
  2. INSTANCE;
  3. }

问:简单粗暴,这是啥原理

答:没啥原理,枚举定义出来后,实例个数就固定了,如果约定它实例只有1个,那就是单例啦

问:有啥好处啊?

答:线程安全,调用效率高,可以天然的防止反射和反序列化调用

问:反射跟反序列是啥

答:我也不知道,后面会学

综合看,推荐使用静态内部的方式,贪方便,就使用枚举方式。

        一曲终了,附和者甚少,唉,这该死的孤独~

原文链接:https://blog.csdn.net/langfeiyes/article/details/118878418



所属网站分类: 程序员的那点事

作者:雨还没有下

链接:http://www.pythonpdf.com/blog/article/273/5b13219ce71c2487b5b3/

来源:编程知识网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

9 0
收藏该文
已收藏

评论内容:(最多支持255个字符)