这是关于如何在此 Builder 实现中摆脱 instanceof的后续线程
这种设计仍然存在一些问题。每次引入新参数时,都必须创建一个新的 ConcereteParameter 类。
这不是问题。但是还必须在 CommandBuilder 中添加方法append(ConcreteParameter)
。而且我不太喜欢这种依赖。
总结
命令可以配置参数。并非每个命令都可以接收相同的参数。所以有些不得不被忽略。当应用于命令时(在这个实现中,这是通过抛出一个
UnsupportedOperationException
可以应用于某些类的参数在这些类中的使用方式不同(如 FTPCommand 和 HTTPCommand 可能以不同的方式使用 IpParameter)
将来可能会引入新的命令和参数
更新
现在的实现works
。但是,如果我有大约 30 个参数,那么对于每个参数我都必须有一个单独的方法,这不是矫枉过正吗?
如果有,实现这一目标的更干净、更灵活的方式/模式是什么?