加入收藏 | 设为首页 | 会员中心 | 我要投稿 周口站长网 (https://www.0394zz.cn/)- 数据采集、智能营销、经验、云计算、专属主机!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

我用这种方式铭记历史

发布时间:2021-02-03 14:50:21 所属栏目:传媒 来源:互联网
导读:三妹,来看下面这个例子。 public class StaticBlockDemo { public static List writes = new ArrayList(); static { writes.add(沉默王二); writes.add(沉默王三); writes.add(沉默王四); System.out.println(第一块); } static { writes.add(沉默王五); wr

“三妹,来看下面这个例子。”

public class StaticBlockDemo { public static List writes = new ArrayList<>(); static { writes.add("沉默王二"); writes.add("沉默王三"); writes.add("沉默王四"); System.out.println("第一块"); } static { writes.add("沉默王五"); writes.add("沉默王六"); System.out.println("第二块"); }}

“writes 是一个静态的 ArrayList,所以不太可能在声明的时候完成初始化,因此需要在静态代码块中完成初始化。”

“静态代码块在初始集合的时候,真的非常有用。在实际的项目开发中,通常使用静态代码块来加载配置文件到内存当中。”

04、静态内部类

“三妹啊,除了以上只写,static 还有一个不太常用的功能——静态内部类。”

“Java 允许我们在一个类中声明一个内部类,它提供了一种令人信服的方式,允许我们只在一个地方使用一些变量,使代码更具有条理性和可读性。”

“常见的内部类有四种,成员内部类、局部内部类、匿名内部类和静态内部类,限于篇幅原因,前三种不在我们本次的讨论范围之内,以后有机会再细说。”

“来看下面这个例子。”三妹有点走神,我敲了敲她的脑袋后继续说。

public class Singleton { private Singleton() {} private static class SingletonHolder { public static final Singleton instance = new Singleton(); } public static Singleton getInstance() { return SingletonHolder.instance; }}

“三妹,打起精神,马上就结束了。”

“哦哦,这段代码看起来很别致啊,哥。”

“是的,三妹,这段代码在以后创建单例的时候还会见到。”

“第一次加载 Singleton 类时并不会初始化 instance,只有第一次调用 getInstance()方法时 Java 虚拟机才开始加载 SingletonHolder 并初始化 instance,这样不仅能确保线程安全,也能保证 Singleton 类的唯一性。不过,创建单例更优雅的一种方式是使用枚举,以后再讲给你听。”

“需要注意的是。第一,静态内部类不能访问外部类的所有成员变量;第二,静态内部类可以访问外部类的所有静态变量,包括私有静态变量。第三,外部类不能声明为 static。”

“三妹,你看,在 Singleton 类上加 static 后,编译器就提示错误了。”
 

从表面上看:

  • 观察者模式里只有两个角色:观察者和被观察者。
  • 发布订阅模式里有三种角色:发布者、订阅者、调度器(第三者)。

往更深层次讲:

  • 观察者和被观察者是松耦合的关系。
  • 发布者和订阅者则完全不存在耦合。

从使用层面上讲:

  • 观察者模式经常用于单个应用内部。
  • 发布订阅模式更多是一种跨应用的模式(cross-application pattern),比如我们常用的消息中间件Kafka 等。

综上:观察者模式和发布订阅模式本质上都有发布订阅的思想,但是又有一定的区别,所以我们不能将二者完全等同起来。

闲聊:冬天到了一起抱团取暖吧~ 大家有任何技术问题、职业发展方向问题都可以加我的个人微信号咨询,想进读者群可以备注”加群“,群里人可好了,微信搜索 smileCoder1024 值得拥有。

(编辑:周口站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读