什么是业务对象和业务逻辑?

42

在阅读过程中,我经常看到他们提到所谓的Business Objects。我已经在维基百科等地方查找了相关信息,但仍然不知道什么是Business Object

对于一个对软件架构毫不了解的人来说,有没有简单的解释呢?

此外,Business Logic是什么?


这是“有趣逻辑”的反义词。 - irreputable
商业的反义词是乐趣。如果你还不知道这一点,那么你从未在真正的公司工作过... - f1sh
请参考与您的问题相关的此答案 - palash140
每个公司都是垃圾,除非你是老板,那么它就不是垃圾。 - magallanes
7个回答

25

这很简单

系统中的每个实体都代表着该系统预期与之交互的人类世界对象,这些实体被称为业务对象。

处理业务对象相关的人类世界逻辑被称为业务逻辑,而不是实现细节的一部分。

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

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


2
所以,如果我理解正确的话,直接来自领域模型的代码中每个类都是业务对象? - devoured elysium
1
@devoured elysium - 是的,但是“领域模型”这个术语与“业务对象”和“业务逻辑”一样,虽然它们三者之间可以很好地相互表达,但在绝对意义上可能不清楚它们的含义 :) - bobah

20

一般来说,Business Object被认为是代表实体的类,例如书籍或商店。这样的类有特定的属性,如价格、颜色、宽度、ISBN编号等。在Java或.NET中,它由所谓的setter和getter组成,即设置或获取这些属性的方法。

另一方面,Business Logic是程序中处理这些属性的部分,也就是这本书是如何销售的。业务逻辑层使用Business Object来访问数据库。


17

嘿,devoured,我在开始开发时也遇到了这个术语的问题。

基本上,之所以使用“业务”这个词,是因为该术语是在商业软件的背景下发展起来的。因此,在这种意义上,假定软件是为商业目的而建立的...而不是艺术、美学或创造性目的。

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

业务逻辑是应用程序中特定于软件设计的“业务”的逻辑。所以,像税收计算或产品与客户的关系之类的东西。

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

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


5
在传统的三层编程中,您有三个逻辑层或层。您有一个表示层,即用户界面,底层将是数据库层。中间层将是业务对象层。如上所述,业务对象应该被抽象化,因为该网站可能根本不涉及业务。这是一种抽象层,使更改表示层或切换到不同数据源更容易。
如果您的用户界面级别没有或很少代码支持,则使设计人员与程序员合作更加容易。设计师可以更改网站的外观和感觉,而程序员无需重写使该网站工作的代码。通过业务对象层,您可以完成网站的繁重工作。您可以调用数据库层,而业务对象不知道您的数据库层是否在XML或关系数据库中。业务对象层然后会更新UI层的响应。通常使用的示例是银行交易。在用户界面中,客户输入他想从储蓄账户转账到支票账户的金额。
业务对象层将包含银行的业务规则。这意味着它将检查用户储蓄账户的余额,并确保转移金额不超过该账户的余额。业务层将包含实际计算储蓄账户和支票账户的新余额的类,并提示数据库层更新数据库。

3

业务对象:

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;
    }
}

0

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

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

例如:在采购领域中:有一整套需要执行的活动清单。从支出分析到为产品请求信息再到生成协商期限的合同。因此,在这种特定情况下,像RFI(信息请求)这样的文件可以被视为RFI业务对象的一个实例(它将具有与流程相关的所有逻辑,如验证等)。


-1

SAP系列业务对象与Oracle核心设计模式内的业务对象不同,后者与应用服务层交互...是的,业务对象确实可以与复合实体一起使用,但它具有业务逻辑,可以携带业务状态,一些简单的调整方法,并且它们是业务信息载体,可以交换动态状态并跨越应用程序层或域,但在不同的上下文中,它具有不同的详细指定名称,例如,我们可以说Web服务请求是XML格式的业务对象...它与数据实体不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接