《Java8函数式编程》学习笔记 - 第8章

第八章 设计和架构的原则

软件开发最重要的设计工具不是什么技术,而是一颗在设计原则方面训练有素的头脑。
—— Craig Larman

如何使用Lambda表达式实现SOLID原则,
该原则是开发良好面向对象程序的准备。

设计模式可以参考下面这个连接 设计模式

在这里主要是要去理解,Lambda表达式对设计模式的影响,以及跟设计模式的关系。

8.1 Lambda表达式改变了设计模式

设计模式是软件架构中解决通用问题的模板。
如果碰到一个问题,恰好有一个与之适应的模式,就能直接应用该模式来解决问题。
从某种程度上来说,设计模式将解决特定问题的最佳实践途径固定了下来。

8.1.1 命令者模式
  • 命令接收者:执行实际任务
  • 命令者:封装了所有调用命令执行者的信息
  • 发起者:控制一个或多个命令的顺序和执行
  • 客户端:创建具体命令实例

假设有一个GUI Editor 组件,在上面可以执行open、save 等一系列操作,
现在我们想实现宏功能——也就是说,可以将一系列操作录制下来,
日后作为一个操作执行,这就是我们的命令接收者

8.1.2 策略模式
8.1.3 观察者模式
8.1.4 模板方法模式

8.2 使用Lambda表达式的领域专用语言

8.2.3 评估

流畅性的一方面表现在DSL 是否是IDE 友好的。
用代码自动补全功能补齐代码。这就是使用Description 和Expect 对象的原因。
当然也可以导入静态方法it 或expect,一些DSL 中就使用了这种方式。
如果选择向Lambda 表达式传入对象,而不是导入一个静态方法,
就能让IDE 的使用者轻松补全代码。

唯一要记住的是调用describe方法

大多数测试框架提供了大量注释,或者很多外部“魔法”,或者借助于反射。
我们不需要这些技巧,就能直接使用Lambda 表达式在DSL 中表达行为,就和使用普通的Java 方法一样。

8.3 使用Lambda表达式的SOLID原则

SOLID 原则是设计面向对象程序时的一些基本原则。
原则的名字是个简写,分别代表了下面五个词的首字母

  • Single responsibility、
  • Open/closed、
  • Liskov substitution、
  • Interface segregation
  • Dependency inversion。

这些原则能指导你开发出易于维护和扩展的代码。

8.3.1 单一功能原则

8.4 进阶阅读

8.5 要点回顾