2009-02-26 27 views
13

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

23

Ở 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ệ.

+0

+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

+0

@Bruno Một ngôn ngữ cốt lõi như C++? – leeand00

+0

súc tích và rất rõ ràng. Lời giải thích tuyệt vời! – Hugo

0

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.

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