[Android] Sử dụng library, module hiệu quả trong Android
Bài đăng này đã không được cập nhật trong 5 năm
Khi lập trình bất cứ ngôn ngữ hay nền tảng nào, chắc chắn chúng ta sẽ sử dụng thêm các library hoặc các module bên thứ 3. Cách sử dụng, áp dụng chúng trong project thì đã được mô tả rõ ràng trong document của library, module đó. Trong bài viết lần này chúng ta sẽ thảo luận một số cách mà có thể customize lại library hoặc module đó sao cho phù hợp với project của mình. Để đơn giản, chúng ta sẽ tạo một project nhỏ và một module nào đó nhé Mình lấy một project có sẵn của mình là Notification, xong mình sẽ tạo một Java library (module) như hình nhé, mình đặt tên library là lib cho nhanh
App mình có package name là simple.notification
và lib sẽ có package name là simple.tuannt.lib
.
Tạo source cho library
Chúng ta sẽ tạo một class có protected method và public class để sử dụng class đó trong library nhé
- protected method
public class Action {
protected void show(String name, int color) {
// todo
}
}
- public class
public class PublicClass {
public void show(String name) {
Action action = new Action();
action.show(name, 1);
}
}
Sử dụng lib
Sử dụng lib này thì quá đơn giản rồi
PublicClass main = new PublicClass();
main.show("Thanh Tuan");
Tuy nhiên chúng ta sẽ thấy vấn đề ở đây là luôn luôn mặc định color của hàm show() là 1
. Vậy chúng ta sẽ làm như nào khi muốn tùy biến tham số color
này mà function show(String, int) lại có access modifier protected
.
Chỉnh sửa lib
Cách 1 - Vào source chỉnh sửa trực tiếp code của library
Cách này mình thấy khá nhiều người dùng, trường hợp ở trên là library mình tạo ra nên chúng ta có thể dễ dàng vào source để chỉnh sửa. Tuy nhiên thực tế có rất nhiều lib ko phải của chúng ta, chúng ta cần download về mới chỉnh sửa được.
Với ví dụ trên, chúng ta chỉ việc sửa lại function show của PublicClass
public void show(String name, int color) {
Action action = new Action();
action.show(name, color);
}
// sử dụng
PublicClass main = new PublicClass();
main.show("Thanh Tuan", 123);
or chúng ta sửa function show của Action
class
public class Action {
public void show(String name, int color) {
// todo
}
}
// sử dụng
Action action = new Action();
action.show(name, color);
Như vậy với trường hợp 2 chúng ta sẽ ko cần đến PublicClass
nữa
Cách 2 - Tạo package tương tự và một class mới để sử dụng
Trong lập trình thông thường chúng ta khá hạn chế truy cập trực tiếp vào source code của một thư viện nào đó để sửa chữa, vì nó có thể sẽ gây ra lỗi mà chúng ta ko kiểm soát được (vì lib đấy ko phải của chúng ta viết ra). Một trường hợp khác là có nhưng library ko để open source nên chúng ta hoàn toàn ko thể download về để chỉnh sửa. Do vậy mình cũng khuyến khích nên sử dụng cách thứ 2 này
Với ví dụ trên, ở ứng dụng của mình, chúng ta cũng tạo ra một package là simple.tuannt.lib
như sau
Tiếp đến tạo một class mới, ActionImpl
trong package vừa tạo
public class ActionImpl {
public void show(String name, int color) {
Action action = new Action();
action.show(name, color);
}
}
// sử dụng
ActionImpl action = new ActionImpl();
action.show("Thanh Tuan", 2);
Vì Action và ActionImpl có cùng package simple.tuannt.lib
nên ActionImpl hoàn toàn có thể sử dụng được function show() của Action class.
Như vậy chúng ta chỉ cần nhớ lại một chút về Access modifier
là có thể tùy biến một cách dễ dàng hơn và ko cần chỉnh sửa trực tiếp source code của lib.
Trên đây là một ví dụ nhỏ nhưng hy vọng phần nào các bạn hiểu được cách sử dụng một thư viện sao cho hiệu quả
Cảm ơn các bạn đã đọc bài viết. Happy coding!
All rights reserved