我会给你一个关于寻路的例子。当你想找到一条路径时,你可以选择一个最终目的地,一个初始位置并找到两者之间最快的路径,或者你可以定义第一个位置,让算法显示你可以完成的每条路径,或者你可以想模拟这个进行测试,然后说出最终目的地并假设您“传送”到那里,依此类推。很明显,功能是一样的:寻找路径。但是参数可能因实现而异。我搜索了很多,找到了很多解决方案:摆脱接口,将所有参数作为实现中的字段,使用访问者模式......
但是我想从你们那里知道将每个可能的参数(而不是状态)放在一个对象中(我们称之为 MovePreferences)并让每个实现都获取它需要的东西的缺点是什么。当然,您可能需要另一个实现,它以您没想到的参数作为参数,您将需要更改 MovePreferences,但这听起来不错,因为您只会向其中添加方法,而不是重构任何现有方法。即使此 MovePreferences 不是我的域的对象,我仍然很想这样做。你怎么看?
(如果您对此问题有更好的解决方案,请随时将其添加到您的答案中。)