2010-03-25 39 views
13

Tôi vừa viết một đoạn dài (và lộn xộn) blogpost về quan điểm của tôi về thiết kế theo hướng miền hiện nay, với các khung như lò xo và ngủ đông ồ ạt được sử dụng.Bạn gặp vấn đề gì với chế độ xem này trên thiết kế theo hướng miền?

Tôi muốn yêu cầu bạn phát hiện bất kỳ vấn đề nào với quan điểm của tôi về vấn đề này - tại sao điều này không hiệu quả, tại sao nó không mang lại lợi ích cho DDD, tại sao nó không phải là một ý tưởng hay.

The blogpost is here (Tôi không nghĩ rằng tôi cần phải sao chép-dán nó trên SO - nếu bạn nghĩ rằng tôi nên, cho tôi biết).

Tôi biết câu hỏi là chủ quan, nhưng nó nhằm thu thập các ý kiến ​​chủ yếu nhất.

(tôi gắn thẻ Java, vì khuôn khổ thảo luận là các khuôn khổ Java)

+0

+1 Bài đăng tuyệt vời và chi tiết nhưng mẫu wordpress tệ nhất bao giờ :)! – systempuntoout

+0

đó là mẫu mặc định :) Nó chứng minh rằng tôi là nhà phát triển chứ không phải nhà thiết kế :) (có khả năng di chuyển blog đến máy chủ của chính mình sớm) – Bozho

+1

Phản hồi của tôi không thực sự tăng lên đến mức trả lời, nhưng tóm tắt kết luận của bạn có vẻ tuyệt vời.Tôi đã phản đối phần còn lại của bài viết vì nó được đóng khung như một phản ứng với một cái gì đó mà tôi chưa bao giờ nghĩ là một ý tưởng hay (đưa các kho vào các đối tượng miền), vì vậy tôi không cần phải bị thuyết phục là sai. :) –

Trả lời

4

Tôi vừa trải qua một năm trong cuộc đời của mình tách rời một ứng dụng để loại bỏ một mô hình chống dị ứng miền và sử dụng sai Hibernate của nó.

Tôi có thể nói mà không nghi ngờ gì rằng mã đến từ DDD dễ hiểu hơn và tái cấu trúc. Trong trường hợp của chúng tôi, việc loại bỏ vô số các bộ định dạng không cần thiết &, việc tăng cường đóng gói, tập trung vào logic nghiệp vụ, và đơn giản hóa các lớp dịch vụ đi kèm với DDD đã làm cho hệ thống dễ dàng hơn nhiều để duy trì bây giờ tôi tin rằng chúng tôi sẽ có thể hoàn thành nó, trong khi trước khi nó được kéo vào mãi mãi. Chúng tôi đã giảm 50% số lượng ứng dụng này mà không xóa bất kỳ chức năng nào.

Tôi cũng tin rằng toàn bộ điểm của công cụ ORM là để logic nghiệp vụ của tôi được làm gọn gàng với mã kiên trì. Khi chúng tôi có mô hình miền thiếu máu, chúng tôi đã có DAO cho mọi lớp miền, giờ đây chúng tôi có một số lượng nhỏ DAO làm điểm nhập cho CRUD trên các lớp miền "chính", nhưng các lớp miền "nhỏ" khác được xử lý bởi cha mẹ của họ ... không phải vì logic kiên trì ở trong bố mẹ mà bởi vì Hibernate minh bạch phản ứng với logic nghiệp vụ và làm mọi thứ Chỉ cần Làm việc.

Tóm lại, tôi không thể trả lời câu hỏi SO này vì tôi dứt khoát đồng ý với bài đăng của bạn 100% ... và đang sống nó mỗi ngày.

3

Chúng tôi đi với cách tiếp cận "mô hình thiếu máu" để chúng ta có thể tái sử dụng các mô hình tương tự với logic kinh doanh khác nhau. Tuy nhiên, chúng tôi bao gồm các tính toán và phương pháp trợ giúp trong các mô hình của chúng tôi nếu chúng được áp dụng cho tất cả các trường hợp. Nhưng chúng tôi không tiêm bất cứ điều gì vào các mô hình của chúng tôi và không tiêm các mô hình của chúng tôi vào IoC.

+0

Bạn đang nói rằng bạn giữ logic kinh doanh của bạn trong các phương pháp dịch vụ? Nếu không, sau đó, nói đúng, đây không phải là một tên miền thiếu máu. Có vẻ như bạn đang sử dụng các kỹ thuật thừa kế và bố cục để tạo mô hình tên miền phong phú bằng cách hợp nhất một nhóm các loại (các lớp trống) với một tập các hành vi (các phương thức trợ giúp). – HDave

+0

Hầu hết các mô hình chỉ có 2-3 "helper" phương pháp. Logic nghiệp vụ nằm trong lớp dịch vụ. Một ví dụ về một phương thức trợ giúp có thể là Contact.FullName mà chỉ cần ghép nối tên và họ của chúng. –

1

Cá nhân tôi không tin rằng phần về việc tiêm các đối tượng kho lưu trữ vào các đối tượng miền (nghĩa là các thực thể liên tục) là cần thiết với Spring và Hibernate. Hibernate đã cung cấp các bộ sưu tập liên tục có thể tải chậm, vì vậy bạn đã có khả năng duyệt qua mô hình miền theo cách tách cơ sở hạ tầng truy cập dữ liệu khỏi logic nghiệp vụ. Tôi không thấy kho chứa giá trị nào trên mô hình miền đang thêm vào.

CHỈNH SỬA: Rất tiếc, đã đăng nội dung này trước khi đọc toàn bộ bài viết. Bây giờ tôi đã đọc toàn bộ bài đăng trên blog, tôi nghĩ rằng tôi đồng ý với nó. Tôi thích phần giới thiệu mà không cần DTO bất cứ khi nào có thể.

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