Vâng, tôi đã sử dụng Qi4j bản thân mình trong khoảng một năm nay trong một dự án. Một khi bạn quen với sức mạnh của mixin trong mô hình miền của mình, bạn sẽ tự hỏi bạn đã từng quản lý như thế nào mà không có chúng trước đây. Trong thực tế, tôi nghĩ rằng phương pháp POJO tạo các mô hình miền nên lỗi thời. Nó tạo ra mã không thể duy trì một cách hệ thống. Bởi vì mô hình mixin/composite là tính năng quan trọng của Qi4j, chứ không phải DI, thực sự không có bất kỳ so sánh nào trên nền tảng Java.
Đối với mối quan tâm của Bozho: khi nói đến tuyên bố mixins có hai trường hợp riêng biệt. Trong các thực thể, tức là mô hình miền, một giao diện thường sẽ chỉ có một triển khai thực hiện và bạn thực sự muốn chủ động tránh việc triển khai một số lý do bảo trì và khả năng đọc. Vì vậy, tôi tuyên bố thực hiện ngay trong giao diện. Tuy nhiên, nó chỉ là một mặc định, có thể được overriden bởi composite nếu bạn muốn. Tôi đã không bao giờ tìm thấy một nhu cầu để làm như vậy.
Trường hợp khác là dịch vụ, điều này hoàn toàn khác. Đối với nhiều trường hợp sẽ chỉ có một thực hiện, và do đó tuyên bố việc thực hiện trong giao diện là một lần nữa khá ok. Tuy nhiên, có nhiều trường hợp hơn với các dịch vụ mà bạn muốn triển khai khác nhau, và vì vậy đối với những trường hợp đó, bạn chỉ cần khai báo mixin trong khai báo kiểu kết hợp bê tông thay thế. Vì vậy, cả hai kiểu đều có thể và được khuyến nghị vì nhiều lý do khác nhau.
Đối với tính năng truyền, có thể truyền một đối tượng là tiền thưởng, không phải là vấn đề. Nếu bạn không có đúc từ một vai trò đến vai trò khác, bạn sẽ phải khá sáng tạo để có được xung quanh nó, mà có lẽ sẽ không làm cho mã của bạn đơn giản hơn.
Nguồn
2010-02-05 04:18:03
Tôi chưa sử dụng Qi4J. Thành thật mà nói, tôi không hiểu nó, nhưng đây không phải là lần đầu tiên Rickard Oberg đi trước tôi. Có lẽ tôi sẽ mò mẫm nó trong một hoặc hai năm nữa. – duffymo
Tôi chỉ tình cờ gặp Qi4J và sau khi nhìn vào các ví dụ, tôi gần như cảm thấy buồn ngủ với vô số các vật phẩm bạn phải tạo ra. Cộng với gần như tất cả mọi thứ họ cho thấy tôi đã làm với Scala và/hoặc AspectJ (Traits, ITDs và pointcuts). Một lời hứa khác cho [GUT] (http: //en.wikipedia.org/wiki/Grand_Unified_Theory) hoặc thuốc chữa bách bệnh để giải quyết tất cả vấn đề lập trình của bạn ... –
Qi4j hiện là Apache Zest. http://zest.apache.org –