近年来,Java 获得了许多新的语言特性,这些特性可以独立使用,并且每个特性都很有用:类型模式(type patterns)、开关改进(switch improvements)、记录和记录模式( records and record patterns)、密封类型(sealed types)和一些其他模式。但有时,整体的效果远大于各部分之和,如果正确组合,这些特性可以对我们的日常编码产生重大影响。
1.面向对象编程(OOP)
Everything is an object.
面向对象编程(简称 OOP)可以归结为一句话。它表示一切都可以或(在 OOP 中)应该被建模为状态和行为的组合。实现它的最直接方法是创建将可变状态与操作它们的方法相结合的类。这些类通常封装它们的状态,并且经常从表示同一类型中不同类的共同特征的接口继承它们的方法的契约。
在 Java 中,这种方法无处不在,也许没有比集合 API 更明显的了。从Iterable到Collection和List,从Queue到Set以及最近的SequencedCollection和SequencedSet,接口定义契约,而具体类(如ArrayList或LinkedList、HashSet或PriorityQueue或TreeSet或ArrayDeque)则以各种方式实现它们,始终确保它们的可变状态保持隐藏,以便外部人员无法破坏它。
因此,我们经常以类似的方式设计自己的系统也就不足为奇了。在网络商店中,商品可能由接口建模Item,该接口由具体类实现,例如B