2009-03-08 55 views
10

Có sự khác biệt giữa đối tượng kinh doanh và pháp nhân không?Đối tượng kinh doanh so với các đối tượng

Nếu tôi định nghĩa loại lớp POCO, hãy nói một lớp Sản phẩm, đó có phải là đối tượng kinh doanh hay một thực thể không?

public class Product { 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public double Price { get; set; } 
    public string Sku { get; set; } 
} 

Lưu ý rằng có chức năng không trong đối tượng này.

+0

Theo "quy tắc" của riêng tôi mà tôi đã mô tả trong câu trả lời của tôi - lớp bạn trình bày sẽ là một thực thể. –

Trả lời

12

Tôi sẽ gọi nó là DTO (đối tượng truyền dữ liệu). Tôi cũng đã nhìn thấy chúng được gọi là "Lớp học bất động sản" trong thời gian qua. Tôi sẽ KHÔNG gọi nó là một đối tượng kinh doanh bởi vì nó không có hành vi và theo định nghĩa của BO được xác định bởi hành vi của họ.

+3

Điều này mâu thuẫn với những gì Wikipedia nói: http://en.wikipedia.org/wiki/Business_object - "Trong khi một chương trình có thể triển khai các lớp, thường kết thúc trong các đối tượng quản lý hoặc thực thi các hành vi, một đối tượng nghiệp vụ thường không tự làm gì một tập hợp các biến mẫu hoặc thuộc tính " –

0

Tôi không nghĩ có sự phân biệt rõ ràng giữa các đối tượng kinh doanh và thực thể. Các trình xử lý khác nhau dường như sử dụng các phiên bản khác nhau.

Xem các nhận xét này theo Ayende.

5

Tôi xem chúng giống nhau, mặc dù có thể nếu bạn có một số lớp giống bộ điều khiển (hoạt động trên mô hình miền của bạn) trong lớp doanh nghiệp của bạn, chúng có thể không được gọi là thực thể. Tôi sẽ nói rằng các lớp như Product là cả các đối tượng nghiệp vụ và các thực thể, trong khi một ProductController sẽ chỉ là một đối tượng nghiệp vụ. Một thực thể đại diện cho một đối tượng mô hình miền - một người dùng, một cuốn sách, một chiếc xe hơi, vv, một cái gì đó có chứa dữ liệu của riêng nó. Tôi nghĩ rằng đó chỉ là vấn đề đặt tên và không quan trọng, tôi có xu hướng sử dụng cả hai thuật ngữ thay thế lẫn nhau, nhưng thường sẽ sử dụng "quy tắc" tôi mô tả ở trên.

0

Thuật ngữ "thực thể" thường được sử dụng như một cách khắt khe hơn để nói "điều". Xem xét sơ đồ reationship thực thể ví dụ - sơ đồ cho thấy mối quan hệ giữa mọi thứ.

Đối tượng kinh doanh đơn giản là những thứ (oops, thực thể) trong miền doanh nghiệp. Tôi sẽ nói Sản phẩm của bạn là một thực thể kinh doanh - so sánh nó với một String, đó là một điều trong miền thực hiện.

+0

Tôi đồng ý với mô tả "thực thể" nhưng bạn trộn "thực thể kinh doanh" với "đối tượng kinh doanh". – Gray

0

Trong các đối tượng kinh nghiệm của tôi thường được liên kết với CRUD. Các đối tượng kinh doanh cũng có thể là các đối tượng không liên tục như strategies, các chính sách, v.v.

6

Tất cả các thực thể là đối tượng kinh doanh, nhưng không phải tất cả các đối tượng kinh doanh đều là thực thể.

Thực thể là đối tượng kinh doanh có nhận dạng được xác định không theo thuộc tính của chúng, mà theo số nhận dạng, như ID của sản phẩm.

Ví dụ về đối tượng kinh doanh không phải là thực thể có thể là Màu. Màu có nguồn gốc từ các giá trị RBG của nó.

Tôi đang đề cập đến, tất nhiên, Entities and Value Objects in Domain-Driven Design.

+0

Tôi sẽ nói rằng một màu được coi là một đối tượng * giá trị *. Nó được xác định bởi giá trị của nó và nhiều trường hợp có cùng giá trị được coi là giống hệt nhau. Thông thường VO cũng không thay đổi. Màu đỏ không thay đổi. –

0

Có sự khác biệt nào giữa đối tượng kinh doanh và pháp nhân không?

Wikipedia định nghĩa "business object" giống như cái tôi gọi là "thực thể". Sự nhầm lẫn đối với tôi với định nghĩa này là từ "kinh doanh" bởi vì "logic nghiệp vụ" là trực giao với các thực thể. Một "thực thể" (DTO, "thực thể dữ liệu", vv) là một đối tượng có các trường và có các phương thức kiểu/set. Nó chứa dữ liệu nhưng chứa tối thiểu (nếu có) logic.

Đối tượng "logic nghiệp vụ" hoặc "quy tắc kinh doanh" đóng gói logic bậc cao hơn cần phải làm việc với các thực thể này. Nó sử dụng các trường từ các thực thể để đưa ra quyết định và sửa đổi và duy trì các thực thể khi cần thiết.

Các vấn đề liên quan