Java:为什么我们从模式中获得Matcher

Java:为什么我们从模式中获得Matcher,java,regex,Java,Regex,为什么java开发人员会采用我们从模式中获取matcher的方式?我是说为什么 Matcher matcher=pattern.matcher(string) 我认为逻辑上一定有类似的东西 Pattern pattern=Pattern.compile(pattern); Matcher matcher=new Matcher(pattern,string); //if we need matcher.setPattern(newPattern); 我的意思是匹配器就像一个正则表达式引擎,模

为什么java开发人员会采用我们从模式中获取matcher的方式?我是说为什么

Matcher matcher=pattern.matcher(string)
我认为逻辑上一定有类似的东西

Pattern pattern=Pattern.compile(pattern);
Matcher matcher=new Matcher(pattern,string);
//if we need
matcher.setPattern(newPattern);
我的意思是匹配器就像一个正则表达式引擎,模式就像这个引擎的命令。为什么要从命令创建引擎?

从Javadoc

通过调用模式的方法从模式创建匹配器

这是一个例子。根据链接的维基百科页面

构建器模式的目的是找到伸缩构造函数的解决方案


模式匹配算法的实现需要跟踪某些状态变量

由于
Pattern
表示线程安全对象,因此它本身不能包含这些变量(否则它将不是线程安全的),因此这些变量存储在为单个匹配调用创建的matcher对象中,而该对象不是线程安全的。从
模式
Javadoc:

此类的实例是不可变的,可供多个用户安全使用 并发线程。Matcher类的实例对于 这样的用途


此外,
Matcher
类还提供对匹配结果的访问,如匹配组等

Matcher.usePattern(newPattern)将模式更改为新模式。我认为这不是生成器模式。模式包含进行匹配的算法,该算法是静态的。匹配器包含匹配状态,该状态是可变的。SETPATH方法是在匹配的中间改变匹配算法。我看不出这是一个构建器模式的例子,你可以通过设置不同的方法来构建一个对象,而对象在构建之后就变得具体了。