• 这是piotr szybicki4年来为了解正确使用Optional类型而努力的结果。Optional隐藏了可能存在空指针的不确定性,比如:</
  • 如果您想掌握函数式编程,最好的起点是使用Java Function接口。这个例子将向您展示在代码中实现此函数接口的四种不同方法 - 从如何使用实际类开始,以及如何使用lambda函数创建非常简洁的代码。 Java Function接口非常简单。它将
  • 在面向对象的编程中,当需要向现有对象添加新操作时,通常使用访问者模式,但由于设计原因不可能修改对象本身并在实现中直接添加缺少的操作。为此,我们域中的每个对象都必须有一个接受访问者并将自己传递给该访问者的方法,然后必须实现如下所示的接口。 icon
  • 开发人员通常认为拥有final引用,或者val在Kotlin或Scala中,足以使对象不可变。这篇博客文章深入研究了不可变引用和不可变数据结构。 不可变数据结构的好处不可变数据结构具有一些显着的好处,例如: icon
  • 为了实际说明模板模式在哪些情况下有用,我们假设我们有一个类如下的Resource类: icon
  • 使用Java 8流,似乎函数编程赢了,无状态和递归万岁!但是现实有点微妙:与软件编程一样,它取决于。我相信你的工具箱中的工具越多越好。 icon
  • 该模式包括创建一系列用于处理输入的对象。链中的每个对象都可以或不可以处理特定的输入,否则它会将输入传递给链的下一个对象。如果链中的最后一个对象也无法处理给定的输入,则链将无提示失败,或者更常见的是,将通过异常通知用户失败。假设我们有一个要解析的文件,文件可以有3种不同的类型:文本,音 icon
  • 责任链模式是创建处理对象链(例如一系列操作)的通用解决方案。一个处理对象可以做一些工作并将结果传递给另一个对象,然后该对象也做一些工作并将其传递给另一个处理对象,依此类推。 责任链模式:不使用Lambda表达式 icon
  • 观察者模式肯定是最常见和最广泛使用的模式之一。其目的是允许在某个事件发生时通知一个或多个对象并相应地采取行动。这种模式的主要抽象是Listener接口: icon
  • 当某个对象(称为主体)需要在某些事件发生时(例如,状态更改)自动通知其他对象(称为观察者)的列表时,观察者设计模式是一种常见的解决方案。在使用GUI应用程序时,您通常会遇到此模式。您在GUI组件(如按钮)上注册一组观察者。如果单击该按钮,则会通知观察者并执行特定操作。但观察者模式不限于GUI icon
  • Decorator模式允许通过使用多个嵌套层包装它来动态扩展现有对象的功能。所有这些层必须实现相同的接口,这样才能组合它们。让我们用一个实际的例子证明这一点:我们需要从年薪总额开始计算工资计算器,并在将其除以12并对其征收一系列税后计算每月净工资。为方便起见,有关这些税收的业务逻辑已 icon
  • Command模式是对象式很容易转换到函数式的一个模式,让我们看一个简单的例子来说明它是如何工作的。首先,有必要定义一个建模命令的接口: icon
  •  Step builder多阶段步骤构造器模式是一种对象创建软件设计模式。与传统构建器模式进行比较时,步骤构建器模式提供了一些简洁的好处。Step Builder模式的主要优势之一是为客户提供有关如何使用API​​的指南。它可以看作是构建器模式和状态机的混合,事实上,这种模式通常被称为构建对 icon
  • 工厂设计模式让我们创建对象而不将实例化逻辑暴露给客户端。例如,假设您正在为银行工作,他们需要一种创建不同金融产品的方式:贷款,债券,股票等。让我们绘制一个类图并编写一些代码来理解Factory Design Pattern,然后使用lambda表达式来删除样板代码。 icon
  • 策略模式是表示一系列算法的通用解决方案,并允许您在运行时选择它们。您可以将此模式应用于多种方案,例如使用不同的解析方式或格式化输入来验证具有  不同条件的输入。 策略设计模式:不使用Lambda表达式假设我 icon
  • 我之前写过关于抽象成本的文章。一旦你在IT行业工作了几十年,一旦你在遗留代码上阅读了数百万行,你就会对任何一种抽象产生正常的怀疑。并不是说我们可以不做抽象。我们需要它能够 icon
  • 战略模式又称为策略模式,其目的是让我们能使用不同但可互换的算法。现在我们在另一个实际例子中使用这种模式。我们想要概括一个流程,该流程在输入中获取文本,使用给定的条件对其进行过滤,并在最终格式化或转换后将其打印在标准输出上。换句话说,我们需要概括2个行为:一个过滤文本,另一个转换它。第一步是将 icon