Tôi chỉ tìm thấy một article trên một khung công tác trong Java rõ ràng cho phép nó hỗ trợ Mixins và một cái gì đó gọi là Lập trình theo định hướng hỗn hợp (mà tất cả những gì tôi biết có thể giống nhau ...) Tôi cũng đã nghe nói/làm việc với AOP, và tôi cũng không chắc chắn nó khác với điều này như thế nào ...Sự khác biệt giữa một Lớp Tóm tắt và Mixin là gì?
Trả lời
Ở cấp độ bất khả tri về ngôn ngữ, một mixin chỉ thêm chức năng cho một lớp, và tiện lợi hơn cho lập trình viên và tránh trùng lặp mã. Một lớp trừu tượng (cơ sở) tạo thành một mối quan hệ là-một và cho phép cho đa hình. Một lý do tại sao thừa kế bị lạm dụng là nó là một cách dễ dàng để thực hiện mixins mà không cần viết bất kỳ bản mẫu nào trong các ngôn ngữ không thực sự hỗ trợ chúng. Vấn đề là bạn đang tuyên bố một mối quan hệ đa hình là một mối quan hệ phụ, làm cho API của bạn khó hiểu hơn và có thể thêm sự mơ hồ. Do đó, các ngôn ngữ mới hơn như D và Ruby hỗ trợ mixins như các tính năng bản địa, cho phép một cách thuận tiện để thêm một loạt các chức năng cho một lớp mà không khai báo một đa hình là một mối quan hệ.
Mixin không bao giờ có nghĩa là lớp độc lập. Họ chỉ thêm một số chức năng cho lớp bạn khai báo. Trong Python, chúng có thể dễ dàng được áp dụng bởi các trang trí lớp. Ví dụ bạn có thể trang trí lớp học của bạn với Singleton mixin, làm cho lớp của bạn trở thành một singleton.
- 1. Sự khác biệt giữa lớp Tóm tắt thuần túy và giao diện
- 2. Sự khác nhau giữa bản tóm tắt gemspec và mô tả gemspec là gì?
- 3. Sự khác biệt giữa "Lớp" và "Cấp" là gì?
- 4. Sự khác biệt giữa một lớp mẫu và một mẫu lớp là gì?
- 5. là gì sự khác biệt giữa SQL_Latin1_General_CP1_CI_AS và SQL_Latin1_General_CP1_CI_AI
- 6. Sự khác biệt giữa xtype và bí danh là gì?
- 7. Sự khác biệt giữa GetHashCode được triển khai trong lớp Object và ValueType là gì?
- 8. Thuật ngữ: Sự khác biệt giữa một lớp học và một thành phần là gì?
- 9. Sự khác biệt giữa Hashtable và Từ điển là gì?
- 10. Sự khác biệt giữa struct_time và datetime là gì?
- 11. Sự khác biệt giữa gói android.opengl và javax.microedition.khronos.opengles là gì?
- 12. Sự khác biệt giữa '&' và ',' trong Generics Java là gì?
- 13. Trong ember.js, sự khác nhau giữa mixin và extend là gì?
- 14. sự khác biệt giữa `lớp công khai` và chỉ` lớp` là gì?
- 15. Sự khác biệt giữa lớp Debug và lớp Trace là gì?
- 16. Sự khác biệt giữa lớp tĩnh và lớp bình thường là gì?
- 17. Sự khác biệt giữa đúc và co giật là gì?
- 18. Sự khác biệt giữa JavaBean và POJO là gì?
- 19. Sự khác biệt giữa mẫu và đường dẫn là gì?
- 20. Sự khác biệt giữa gVim và gVim là gì?
- 21. Sự khác biệt giữa crontab và cronjob là gì?
- 22. Sự khác biệt giữa móc và gọi lại là gì?
- 23. Sự khác biệt giữa ASP.NET và ASP.NET MVC là gì?
- 24. SQLAlchemy: Sự khác biệt giữa flush() và commit() là gì?
- 25. Sự khác biệt giữa while (true) và loop là gì?
- 26. Unix: Sự khác biệt giữa nguồn và xuất là gì?
- 27. Sự khác biệt giữa RoutedCommand và RoutedUICommand là gì?
- 28. Sự khác biệt giữa DBI và DBD là gì?
- 29. Sự khác biệt giữa is_a và instanceof là gì?
- 30. Trong Ember.js, sự khác biệt giữa [] và Ember.A ([]) là gì?
+1 Giải thích ngắn gọn. Điều này COP âm thanh mát mẻ. Mặc dù tôi thích nhìn thấy loại điều này làm việc theo cách của nó xuống đến cấp độ ngôn ngữ cốt lõi. Cùng với công cụ AOP. – BuddyJoe
@Bruno Một ngôn ngữ cốt lõi như C++? – leeand00
súc tích và rất rõ ràng. Lời giải thích tuyệt vời! – Hugo