【问题标题】:newbie to OO questionOO问题的新手
【发布时间】:2009-09-27 05:49:38
【问题描述】:

我的问题与窗体有关

假设我有一个用于客户和订单的组合框,根据对这些组合框所做的选择,我为所有订单详细信息填充了一个数据网格。

我对数据网格行中的双击事件感兴趣。

一旦发生 2 件事,可能会发生:

  • 记录已删除。
  • 一个或两个组合框已更改。

没有 OO 经验,我在代码隐藏中处理所有这些逻辑。

这是错误的做法吗?如果满足所有条件,我应该创建一个返回布尔值的类是取消事件还是执行其他操作?

如果我创建一个处理该逻辑的类,那么该类需要引用数据网格和所有关联的控件以及它们的先前值和当前值。

我只是一头雾水。

【问题讨论】:

    标签: windows winforms oop forms paradigms


    【解决方案1】:

    我不确定这是一个 OO 问题:更多关于 patterns 的信息。

    如果我是你,我会查看MVC(模型视图控制器)、MVP(模型视图演示者)等等。 Martin Fowler 是该主题的主要权威之一。

    MVVM 在 WPF 中很流行 - 不确定数据绑定是否适合 Forms。

    其中一个关键的事情是,如果您将逻辑与显示面板分开,那么测试会容易得多。

    【讨论】:

      【解决方案2】:

      面向对象的做事方式是没有人能一口气告诉你的。这是一种全新的思考范式,即如何根据少数交互对象来解决问题。这些对象来自您正在为其创建解决方案的问题域。

      从这个问题中,我可以轻松地挑选出至少两个有问题的域对象——一个是“客户”,另一个是“订单”。 可能是您的“Order”类由“OrderItem”的各种对象组成,这些对象由对“Product”、数量和价格之一的引用组成。

      如果这有点难以理解,我很确定您至少会拥有一个包含提供数据持久存储的表的数据库。您拥有的表(在许多情况下)可以对应于您需要设计的实际类。

      您不必设计单独的类,这些类实际上将与数据网格和其他控件一起工作,它们可以保留在后面的代码中。但是您所有的业务领域对象以及可以对这些对象执行的操作都必须封装到类中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-11
        相关资源
        最近更新 更多