Decorator pattern cho phép người dùng thêm chức năng mới vào một đối tượng hiện có mà không làm thay đổi cấu trúc của nó. Loại design pattern này dùng để có các tính năng bổ sung được thêm vào đối tượng ban đầu.
Kotlin cung cấp khả năng mở rộng một class với chức năng mới mà không cần phải kế thừa từ class đó, sử dụng tương tự các mẫu thiết kế như Decorator. Điều này được thực hiện thông qua các khai báo đặc biệt được gọi là Extension.
Ví dụ: Bạn có thể viết các hàm mới cho một class từ thư viện của bên thứ ba mà bạn không thể sửa đổi, hay không muốn làm ảnh hưởng tới class cũ. Các hàm như vậy có sẵn để gọi theo cách thông thường như thể chúng là các phương thức của lớp ban đầu. Cơ chế này được gọi là extension function . Ngoài ra còn có extension properties cho phép bạn xác định các thuộc tính mới cho các lớp hiện có.
Trong function extension, Kotlin cho phép định nghĩa một phương thức bên ngoài lớp chính (main class). Trong ví dụ sau, chúng ta sẽ thấy cách extension được implement ở functional level.
Ở đây chúng ta có 2 loại đồ uống Espresso và Mocha đã được tạo sẵn. Nhưng khi người dùng muốn dùng thêm sữa, topping … chúng ta cần tính lại giá. Để không làm thay đổi các class được tạo sẵn hay kế thừa chúng, ta có thể làm như sau:
Sau khi viết các extension function => chúng ta chỉ cần gọi các function này bằng kí hiệu chấm(.) như các function thông thường.
Vì thế, từ ví dụ bên trên, chúng ta đã quan sát thấy các function mới được add vào hoạt động giống như function static bởi vì chúng ta đang gọi chúng bằng Classname.fun_name. Những lợi ích chính của extention function là:
Nguồn tham khảo : https://kotlinlang.org/docs/extensions.html#extensions-are-resolved-statically
You need to login in order to like this post: click here
YOU MIGHT ALSO LIKE