Som*_*omu 6 java design-patterns
控制器从用户接收几个水果的列表.控制器需要从这些水果制作果汁.一个榨汁机可以用橙子和葡萄柚制作果汁; 另一个榨汁机知道用苹果,香蕉和木瓜制作果汁; 等等.每个榨汁机都可以一次接受多种水果,它只能加工它能够的水果,而忽略其他未受影响的水果.请为此问题建议合适的设计.我一直在考虑以下选项:
MasterJuicer.juice(List<Fruit> fruits).MasterJuicer反过来打电话CitrusJuicer.juice(fruits)和PulpyJuicer.juice(fruits).JuicerFactory.getJuicers(List<Fruit> fruits)得到一个List<Juicer>.控制器然后循环通过每个榨汁机并打电话Juicer.juice(fruits).Factory返回实例列表是否常见?Map?控制器调用FruitsRegistry.getJuicer(Fruit fruit)每个水果,然后循环调用每个榨汁机.工厂可以提供正确的榨汁机,但随后您的榨汁机处理逻辑会被推送到您的控制器。
您可以在每个访问者之间传递要处理的成分列表,以便他们可以与他们关心的水果进行交互。
如果您不想手动向 MasterJuicer 注册榨汁机,您可能需要巧妙地进行某种服务发现。Java 中的一种常见技术是使用注释和类路径扫描在运行时查找类并在启动时自动注册它们。有一些库可以执行此操作,或者如果您已经在使用 Spring 框架,则可以使用其内置扫描工具。
| 归档时间: |
|
| 查看次数: |
531 次 |
| 最近记录: |