【问题标题】:What are Business Objects and what is Business Logic?什么是业务对象,什么是业务逻辑?
【发布时间】:2011-03-17 11:19:48
【问题描述】:

阅读时,我不断看到他们称之为Business Objects 的引用。我查过 Wikipedia 等,但我一直不明白 Business Object 是什么。

对于不了解软件架构等的人来说,有什么简单的解释吗?

另外,Business Logic 是什么?

【问题讨论】:

  • 这与有趣的逻辑相反。
  • 商业的反面是有趣。如果您还不知道,那么您从未在一家真正的公司工作过......
  • 请参考与您的问题相关的this答案。
  • 每家公司都是垃圾,除非你是所有者,否则它不是垃圾。

标签: business-logic


【解决方案1】:

这很简单

系统中的每个实体,代表系统预期与之交互的人类世界对象都是一个业务对象。

围绕操作业务对象的系统中的人类世界逻辑是业务逻辑。

这与作为实现细节的一部分的对象和逻辑相反。

例如在多层交易系统中订单/交易将是业务对象,但心跳将是实现细节。

为流媒体编码订单/交易对象的逻辑将是实现细节,而一旦交易到达,将订单状态更改为“已完成”的逻辑是业务逻辑。

【讨论】:

  • 那么,如果我没听错的话,代码中直接来自领域模型的每个类都是业务对象?
  • @devoured elysium - 是的,但是“领域模型”与“业务对象”和“业务逻辑”是同一种术语,虽然这三个可以很好地表达为每个其他可能不清楚它们的绝对含义:)
【解决方案2】:

嗯,业务对象通常被认为是代表实体的类,例如一本书或一家商店。这样的类具有某些属性,例如价格、颜色、宽度、isbn 编号等。在 Java 或 .NET 中,它由所谓的 setter 和 getter 组成,即设置或获取这些属性的方法。

另一方面,业务逻辑是程序中使用该属性的部分,即这本书是如何销售的。业务逻辑层使用业务对象来访问数据库。

【讨论】:

    【解决方案3】:

    嘿,狼吞虎咽,当我开始开发时,我也遇到过这个术语。

    基本上,使用“业务”一词的唯一原因是该术语是在商业软件的背景下开发的。因此,从这个意义上说,假设该软件是为商业目的而构建的……而不是艺术、美学或创意目的。

    因此,业务对象是现实世界“业务”对象的简单代码表示。因此,您可能有一个产品类或一个员工类。

    业务逻辑是应用程序中特定于软件设计的“业务”的逻辑。因此,诸如税收计算之类的事情,或者产品与客户的关系……诸如此类。

    请注意,业务对象或业务逻辑的概念不适用于视频游戏开发或艺术开发。

    它也不适用于某些框架或库,例如 ORMS 或单元测试库,因为它们是不特定于任何“业务”的可重用组件。

    【讨论】:

      【解决方案4】:

      在传统的 3 层编程中,您具有三个逻辑层或层。您有一个表示层,即用户界面,底层将是数据库层。中间层是业务对象层。正如上面所指出的,业务对象应该被抽象化,因为站点可能根本不是关于业务的。它是一个抽象层,可以更轻松地更改表示层或切换到不同的数据源。

      如果您的用户界面级别背后没有代码或代码很少。它使设计师更容易与程序员合作。设计人员可以更改站点的外观和感觉,而程序员无需对使该站点正常工作的代码进行大量重写。使用业务对象层,您可以对网站进行繁重的列出。您在业务对象不知道您的数据库层是在 XML 还是关系数据库中的情况下调用数据库层。然后业务对象层将更新对 UI 层的响应。 通常使用的示例用于银行交易。在用户界面中,客户输入他想从储蓄账户转入支票账户的金额。

      业务对象层将包含银行的业务规则。这意味着它将检查用户储蓄账户的余额,并确保转账金额不超过账户余额。业务层将包含实际计算储蓄账户和支票账户新余额的类,它会提醒数据库层更新数据库。

      【讨论】:

        【解决方案5】:

        业务对象:

        class User {
            long id;
            String fullNames;
            int age;
        }
        
        class Book {
            long id;
            String bookTitle;
        }
        
        class Sales {
            long id;
            long userID;
            long bookID;
        }
        

        业务逻辑:

        class BookSalesController {
            private User user = new User();
            private Book book = new Book();
            private Sales sale = null;
        
            public Sale sale(long saleID) {
                String query = "SELECT * FROM Sales s WHERE s.id = :saleID";
                ....
                .... execute the query
        
                // Assuming we have our Result Set here by now
        
                if (rs.next()) {
                    sale = new Sales(rs.getString("User Names"));
                    sale.setUserID(rs.getLong(userID));
                    sale.setBookID(rs.getLong(bookID));
                }
        
                return sale;
            }
        }
        

        【讨论】:

          【解决方案6】:

          业务对象的定义很难在搜索引擎上找到,因为它会告诉您 Business Objects 是一家被 SAP 收购的公司。但这不是大多数人想要的。

          业务对象是业务逻辑模型对业务场景的封装。

          例如:在采购领域:需要执行的活动的完整列表。 从支出分析到产品信息请求,再到协商条款生成合同。所以在这个特定场景中,像 RFI(信息请求)这样的文档可以被认为是 RFI 业务对象的一个​​实例(它将具有与验证等流程相关的所有逻辑)。

          【讨论】:

            【解决方案7】:

            SAP系列业务对象与oracle'core设计模式中的业务对象不同,它与应用服务层交互......是的,业务对象确实与复合实体一起工作,但它有业务逻辑,它可以承载业务状态, 一些容易调整的方法,它们是业务信息载体,具有可交换的动态状态,可以跨应用层或领域,但是在不同的上下文中,它有不同的详细指定名称,例如,我们可以说web服务请求是一个业务对象。 xml格式……和数据实体不一样

            【讨论】:

              猜你喜欢
              • 2011-09-07
              • 1970-01-01
              • 2023-03-20
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-09-07
              • 1970-01-01
              • 2020-04-14
              相关资源
              最近更新 更多