Structural Patterns Adapter

Một phần của tài liệu Sách design pattern phần 1 (Trang 89 - 91)

Adapter

Adapter design pattern cho phép 2 lớp khơng tương thích làmviệc ược cùng nhau bằng

cách chuyển ổi giao diện (interface) của một lớp sang giao diện khác phù hợp với yêu cầu của khách hàng.

Ví dụ khi ta muốn hiển thị một danh sách các ối tượng cho tương thích với view.

public class TribbleAdapter extends RecyclerView.Adapter {

private List mTribbles; public TribbleAdapter(List

tribbles) { this.mTribbles = tribbles; }

@Override

public TribbleViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

LayoutInflater inflater =

LayoutInflater.from(viewGroup.getContext());

View view = inflater.inflate(R.layout.row_tribble, viewGroup,

false);

return new TribbleViewHolder(view); }

@Override

public void onBindViewHolder(TribbleViewHolder viewHolder, int i) {

viewHolder.configure(mTribbles.get(i)); }

public int getItemCount() {

return mTribbles.size();

} } }

RecyclerView sẽ khơng biết Tribble là gì, vì nó khơng bao giờthấy cụ thể, ó là cơng việc của Adapter. Adapter sẽ có nhiệm vụ xử lý dữ liệu trong Tribble và gửi cấu hình chính xác ến ViewHolder.

Facade

Faỗade design pattern cung cấp các high level interface ể các interface khác dễ sử

dụng hơn.

Nếu Activity của bạn cần một danh sách Book, nó có thể yêu cầu một ối tượng duy nhất cho danh sách ó mà khơng hiểu các hoạt ộng bên trong như lưu trữ cục bộ, bộ nhớ cache và các API. Nó sẽ giữ cho các oạn mã ược rõ ràng, sạch sẽ mà không làm thay ổi hoạt ộng trong Activity. Sau này khi cần, ta có thể thay ổi các API mà khơng làm ảnh hưởng ến các tác ộng mà nó thực hiện.

Retrofit là một Open Source của Square sẽ giúp ta thực thi Faỗade design pattern.

Client chỉ ơn giản gọi listBook() method ể nhận ược danh sách các Book trong callback.

Điều này cho phép ta thực hiện các iều chỉnh bên dưới mà không ảnh hưởng ến client. Ví dụ: bạn có thể chỉ ịnh deserializer JSON tùy chỉnh:

RestAdapter restAdapter = new RestAdapter.Builder()

.setConverter(new MyCustomGsonConverter(new Gson())) .setEndpoint("http://www.myexampleurl.com")

return restAdapter.create(BooksApi.class);

Mỗi ối tượng càng ít biết về những gì diễn ra sau ó (ít phụ thuộc lẫn nhau) thì ta sẽcàng dễ trong việc sửa và iều chỉnh ứng dụng sau này.

Một phần của tài liệu Sách design pattern phần 1 (Trang 89 - 91)

Tải bản đầy đủ (PDF)

(93 trang)