【问题标题】:Can I create Callables in a factory and execute them through a dispatcher? [closed]我可以在工厂中创建 Callables 并通过调度程序执行它们吗? [关闭]
【发布时间】:2016-05-19 12:48:15
【问题描述】:

在我的应用程序中,我们根据某些条件创建了两种类型的可调用对象。

我们正在使用主线程中的执行器服务执行所有可调用对象并更新数据库。

 public interface CallableTask<T> extends Callable<T>{

 }

 public class Task1 implements    CallableTask<TaskOutCome>{

 }

 public class Task2 implements    CallableTask<TaskOutCome>{

 }

我们是否可以使用工厂设计模式来创建可调用对象和调度程序设计模式来执行主线程中的所有可调用对象。

【问题讨论】:

  • This 可能会对您有所帮助。
  • “我们能不能……”没有人阻止你。你有什么怀疑的理由吗? (即,您真正想在这里问什么?)
  • 到目前为止,您还没有说明使用工厂设计模式的任何理由。根据条件制作不同类型的对象是你可以用“if”语句做的事情
  • 我可以用“If”语句来做到这一点,把所有东西都写在一个类中[它也可以工作]。只是想知道在上述场景中可以使用任何设计模式
  • 这个问题询问关于特定设计模式在特定问题上的清晰应用;答案中的意见很少。我注意到投票搁置它的人中没有一个人在 cmets 中真正阐明了这样做的原因。

标签: java multithreading design-patterns


【解决方案1】:

您当然可以使用工厂来创建任务。分派器可能不适合执行任务,因为分派器将事件分派给多个观察者。当事件是任务时,如果您的观察者是任务执行者,您最终可能会多次执行每个任务,这可能不是您想要的。

【讨论】:

    【解决方案2】:

    根据您告诉我们的内容,您将根据条件创建多个任务,工厂模式在这里是一个不错的选择,因为它允许您将决策制定与主要逻辑隔离开来。作为额外的奖励,您可以稍后使用依赖注入来使您的代码更易于测试。

    我会说,去吧。

    【讨论】:

      猜你喜欢
      • 2016-11-01
      • 2018-10-20
      • 2022-01-18
      • 2021-07-22
      • 2013-06-14
      • 2018-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多