寻找设计模式或资料库

时间:2019-02-21 16:16:30

标签: java design-patterns

是否可以使用一种特定的设计模式来生成带有一些嵌套条件的字符串表达式?

给出:

Builder.red().and().blue().or(white().and().black()).toString()

结果应为:

red and blue or ( white and black )

最初,我开始使用构建器模式(也许这不合适),但是当我不得不生成嵌套条件时,我陷入了困境。理想情况下,用法应类似于上面的代码片段(方法链接)。

对于Java项目(版本8),我需要它,并且生成的表达式将用作spring表达式语言(找不到能做到这一点的spring实用程序类)。

1 个答案:

答案 0 :(得分:1)

我最近通过跟踪构建器中的嵌套表达式解决了类似的问题。尽管我希望像您建议的那样进行链接,但是我不得不将嵌套条件放在.open()和.close()之间。

您的代码看起来像

Builder.red().and().blue().or().open()
           .white().and().black()
.close().toString()

open()函数会在堆栈上(在构建器内部)添加另一个构建器,而close()函数会弹出该构建器并将其添加到中间模式。