Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 命令模式在这里适用吗?_Java_Oop_Design Patterns_Command Pattern - Fatal编程技术网

Java 命令模式在这里适用吗?

Java 命令模式在这里适用吗?,java,oop,design-patterns,command-pattern,Java,Oop,Design Patterns,Command Pattern,我有一个值对象(VO)。字段/属性之一是保存字符串值的“sourceKey” 例如: 字符串sourceKey1=“cust12/proj1/site1/images/somefile.JPG” 字符串sourceKey2=“cust12/area1/site1/images/somefile.JPG” 现在,我需要转换这个源密钥,并通过首先将源密钥断开“/”然后: -通过呼叫客户服务替换cust12-通过Id 12查找客户,并通过dest键中的客户名称替换cust12。 -与替换proj1类似

我有一个值对象(VO)。字段/属性之一是保存字符串值的“sourceKey”

例如:
字符串sourceKey1=“cust12/proj1/site1/images/somefile.JPG”
字符串sourceKey2=“cust12/area1/site1/images/somefile.JPG”

现在,我需要转换这个源密钥,并通过首先将源密钥断开“/”然后:
-通过呼叫客户服务替换cust12-通过Id 12查找客户,并通过dest键中的客户名称替换cust12。
-与替换proj1类似,调用项目服务,按id 1查找项目,并按项目名称替换proj1。
-等等

因此,为了以干净的方式实现这一点,我考虑编写命令——通过调用适当的服务(customerService、projectService等)获取对象的每个命令。然后在客户机级别,只需解析sourceString并建立一个要执行的命令列表,最后使用commands列表建立一个目标键


我想的方向对吗?命令模式是干净的/OO方式吗?

不,命令模式不适合这个问题。从面向对象的角度来看,我将首先将源键建模为
对象
,而不是
字符串
,以避免编程

它看起来像一个
SourceKey
对象将依赖于
CustomerService
ProjectService
,并将包含五个字段,它可以根据需要组合成一个
字符串。换句话说,尝试将
字符串
转换逻辑封装到它自己的
对象