【发布时间】:2012-01-23 23:19:18
【问题描述】:
命令查询分离建议每个方法要么是执行操作的命令,要么是向调用者返回数据的查询:
但是例如 String 类的 replace() 方法呢?
它的签名是:String replace(String str);
这违反了CQS,不是吗?
承认它违反了,我不明白我们如何修复它,以便作为命令的 replace() 可以通知调用者最新的字符串。实际上,根据 CQS 的命令必须有一个 void 作为返回类型。
【问题讨论】:
-
您有疑问,还是只是在观察?见stackoverflow.com/faq#dontask
-
谁说 Java 甚至远程遵循 CQS?无论哪种方式,
replace都不会更改它被调用的字符串。
标签: java coding-style design-patterns