【问题标题】:Sane Design Alternative理智的设计替代品
【发布时间】:2009-04-10 22:14:59
【问题描述】:

我有一个(设计的)应用程序,基本上可以像这样工作:

Main 类、BusinessLogic 类、UserInterface 类

BusinessLogic 和 UserInterface 设计为类库 - 不是持续开发,而是由开发人员在 Main 类中使用。

BusinessLogic 的构造函数还实例化了 UserInterface,它将显示基于文本的菜单并接受终端输入。根据该输入,它将通过调用其各自 BusinessLogic 对象的相关方法来执行相关功能。

但是,这是一个循环引用,并且 UserInterface 没有明显的方式来调用其各自的 BusinessLogic 对象(没有硬编码的 BusinessLogic 对象标识符,但这是更糟糕的做法!)。

这在我看来确实是一个合乎逻辑的设计,但在编程方面很难实现。

我考虑的另一种选择是让 UI 将输入数据返回给 BusinessLogic 的构造函数,但我不希望 BusinessLogic 处理输入分析,UI 似乎是它的明智之选。

有什么想法吗?

【问题讨论】:

  • “BusinessLogic 对象标识符硬编码”是指将“父”BusinessLogic 作为 UserInterface 中的字段?

标签: java oop


【解决方案1】:

您应该试试Model-View-Controller pattern。在您的情况下,模型和控制器可能最终相同。通过接口将您的类彼此隔离,然后在外部(在您的示例中从 Main)创建这些类将简化每个人的生活。

【讨论】:

  • 哦,哇,应该想到了,我知道 :) 我想最好的实现方式是:Main 类,BusinessLogic 类,UI 类(视图),Controller 类(控制器)(和数据库是模型),有效地分离数据、UI 组件、输入分析和业务逻辑,对吧? :)
  • 嗯,数据库是一种模型,但应该将数据表示为真实模型,可在应用程序中使用。代表您正在解决的问题的对象。这可能是您所说的“业务逻辑”部分。
【解决方案2】:

听起来您可能想使用模型-视图-控制器模式。

另外,如果你想减少部件之间的实例化依赖,你可以考虑使用dependency-injection,和Spring一样。

【讨论】:

    猜你喜欢
    • 2012-03-08
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    相关资源
    最近更新 更多