"Xin chào, Amigo! Lại là tôi đây. Tôi muốn cung cấp cho bạn một quan điểm khác về giao diện. Bạn thấy đấy, hầu hết thời gian một lớp là mô hình của một đối tượng cụ thể. Ngược lại, giao diện giống như khả năng của đối tượng hoặc vai trò, chứ không phải là chính đối tượng."
Ví dụ, những thứ như ô tô, xe đạp, xe máy và bánh xe được thể hiện tốt nhất dưới dạng các lớp và đối tượng. Nhưng các khả năng của họ, như «Tôi có thể di chuyển», «Tôi có thể chở người» và «Tôi có thể đỗ xe», được thể hiện tốt hơn dưới dạng giao diện. Kiểm tra ví dụ này:
mã Java | Sự miêu tả |
---|---|
|
Tương ứng với khả năng di chuyển. |
|
Tương ứng với khả năng di chuyển. |
|
Tương ứng với khả năng chuyên chở hàng hóa. |
|
Một lớp «bánh xe». Có khả năng di chuyển. |
|
Một hạng «xe hơi». Có khả năng di chuyển, được điều khiển bởi một người và chở hàng. |
|
Một lớp «trượt ván». Có khả năng di chuyển và được điều khiển bởi một người. |
Giao diện đơn giản hóa đáng kể cuộc sống của lập trình viên. Các chương trình thường có hàng nghìn đối tượng, hàng trăm lớp và chỉ vài chục giao diện (vai trò). Có ít vai trò, nhưng chúng có thể được kết hợp theo nhiều cách (lớp).
Toàn bộ vấn đề là bạn không phải viết mã xác định tương tác với mọi lớp khác. Tất cả những gì bạn phải làm là tương tác với các vai trò (giao diện).
Hãy tưởng tượng rằng bạn là một người chế tạo robot. Bạn có hàng chục robot cấp dưới và mỗi người trong số họ có thể có nhiều kỹ năng. Giả sử bạn cần khẩn trương hoàn thành việc xây dựng một bức tường. Bạn chỉ cần lấy tất cả các robot có khả năng "xây dựng" và bảo chúng xây tường. Bạn không thực sự quan tâm robot nào làm việc đó. Hãy để nó là một bình tưới nước robot. Nếu nó biết cách xây dựng, hãy để nó xây dựng.Đây là cách nó trông như thế nào trong mã:
mã Java | Sự miêu tả |
---|---|
|
Khả năng «xây tường». Hiểu lệnh «xây tường» (có cách làm phù hợp). |
|
Robot có khả năng/kỹ năng này.
Việc tưới nước không thể xây dựng một bức tường (nó không triển khai giao diện WallBuilder). |
|
Làm thế nào để chúng ta ra lệnh xây tường? |
"Điều đó thật thú vị. Tôi chưa bao giờ mơ rằng các giao diện có thể là một chủ đề thú vị như vậy."
"Và sau đó là một số! Cùng với tính đa hình, nó hoàn toàn gây ấn tượng."
GO TO FULL VERSION