2011-02-06 32 views

Trả lời

31

Mô hình miền (thuật ngữ không phải là tất cả Java cụ thể) là một lớp mô hình hóa một cái gì đó trong miền vấn đề, trái ngược với một lớp tồn tại vì lý do thực hiện kỹ thuật.

Trường hợp mô hình miền thường cần phải được lưu giữ trong cơ sở dữ liệu và trong Java, chúng thường tuân theo đặc tả Java Beans, tức là chúng có và thiết lập các phương thức để biểu diễn các thuộc tính riêng lẻ và một hàm tạo tham số. Spring và các khung công tác khác cho phép bạn truy cập trực tiếp các thuộc tính này trong các JSP của bạn.

Ví dụ: trong ứng dụng cửa hàng, một số lớp mô hình miền của bạn sẽ là Sản phẩm, Đơn hàng, Giỏ hàng và Khách hàng.

+1

từ "tồn tại trong cơ sở dữ liệu" nghĩa là gì trong ngôn ngữ layman –

+2

@Name, điều đó có nghĩa là chúng tồn tại trong trường hợp ứng dụng chứa chúng. Ví dụ. sau khi ứng dụng cửa hàng bị tắt và khởi động lại, ứng dụng sẽ vẫn nhận ra bạn là Khách hàng đã đăng ký và sẽ nhớ nội dung của giỏ hàng và các đơn đặt hàng trước đây của bạn. –

+6

@Name: "kiên trì" về cơ bản có nghĩa là "lưu". –

8

A Domain model là một mô hình khái niệm về miền vấn đề. Bởi "mô hình miền java", chúng chỉ có nghĩa là các lớp java đại diện cho mô hình đó. Không có gì cụ thể đối với java trong khái niệm này.

Xem thêm Domain Driven Design để có cách tiếp cận tập trung phát triển của bạn vào nhu cầu miền doanh nghiệp.

4

Hãy bắt đầu với một ví dụ. Bạn đang tạo một ứng dụng với sẽ được sử dụng bởi một số người ở địa phương của bạn. Khi thiết kế hệ thống bạn gọi những người dùng này của hệ thống của bạn. Bạn cũng phải quản lý danh sách vai trò cho những người này trong hệ thống và thông tin xác thực. Vì vậy, bạn quyết định tạo một thực thể khái niệm trong hệ thống. Thực thể khái niệm này được ánh xạ tới một đối tượng User trong phần mềm của bạn (ứng dụng của bạn). Bây giờ khi bạn đại diện cho ứng dụng của mình, bạn mô tả đối tượng User đó như là một Mô hình miền. Ý tưởng cơ bản đằng sau thuật ngữ này là duy nhất. Bạn có thể đọc thêm về nó trong số Wikipedia link sau.

5

Câu trả lời của Michael Borgwardt "Mô hình miền (thuật ngữ không phải là tất cả Java cụ thể) là một lớp" là sai. Tôi rất ngạc nhiên vì vậy nhiều người đồng ý với câu trả lời đó.

Mô hình miền là tất cả các lớp mô hình hóa hành vi của giải pháp. Đó là mức tối thiểu cần thiết để hoàn thành hành vi được yêu cầu. Mô hình miền không có giao diện người dùng và chức năng kiên trì (trừ khi vấn đề xoay quanh UI hoặc sự kiên trì).

Tôi đã thấy mô hình miền được triển khai trong một lớp nhưng đó không phải là thiết kế của giải pháp hướng đối tượng. Trong một mô hình miền hướng đối tượng, mỗi khái niệm có lớp riêng của nó thực hiện hành vi bắt buộc của khái niệm đó và chứa các trường cần thiết để duy trì trạng thái của lớp.

+3

Thuật ngữ "mô hình miền" có nhiều định nghĩa Han. Nó có thể có nghĩa là toàn bộ mô hình ứng dụng hoặc một mô hình thực thể duy nhất. Nó phụ thuộc vào ngữ cảnh. –

3

Tôi biết đã lâu rồi kể từ bài đăng cuối cùng tại đây. Nhưng điều quan trọng là thông tin xung quanh khái niệm này là rõ ràng. Mô hình miền thường là một tập hợp các lớp đại diện cho một miền vấn đề cụ thể. Khái niệm này không gắn với bất kỳ loại triển khai công nghệ nào. Tôi nghĩ rằng có một chút sai lầm khi nói:

"Trường hợp mô hình tên miền thường cần phải được lưu giữ trong cơ sở dữ liệu và trong Java, chúng thường tuân thủ đặc tả Java Beans, tức là họ đã nhận và đặt phương thức đại diện Spring và các khung công tác khác cho phép bạn truy cập các thuộc tính này trực tiếp trong các mẫu JSPs "

Tên miền thường là kết quả của thiết kế định hướng theo miền. Thiết kế điều khiển miền là chìa khóa cho một mô hình miền tốt và mạnh mẽ.Tôi khuyên bạn nên đọc qua cuốn sách Domain Driven Design của Eric Evans để giúp bạn hiểu rõ hơn.

Lớp mô hình miền có thông tin liên quan đến chúng nhưng hành vi theo ý kiến ​​của tôi, quan trọng hơn dữ liệu trong ngữ cảnh này. Một sai lầm lớn xung quanh thiết kế điều khiển miền là tạo các lớp dữ liệu đại diện cho dữ liệu của thực thể tên miền, chẳng hạn như khách hàng và chỉ cung cấp các getters và setters công khai cho các thuộc tính của khách hàng. Các đối tượng này có xu hướng chỉ bắt chước cấu trúc cơ sở dữ liệu của bạn và kết quả là logic nghiệp vụ thực tế có nhiều khả năng cư trú trong các dịch vụ miền, dẫn đến một anemic domain model. Mô hình này gần hơn với mẫu Transaction Script so với mô hình miền.

+0

Ai đó có thể giải thích phiếu bầu xuống? –

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