Adapter pattern là gì

Warm upGiả dụ, bạn tất cả một chiếc máy hình họa Canon 50D nhưng lại bạn vô tình làm hư thẻ lưu giữ SD của nó, cố vào đó, bạn còn một mẫu thẻ microSD 256GB. Làm nắm như thế nào nhằm tận dụng tối đa được chiếc thẻ microSD ấy?Một giải pháp là ta đã dùng một “bộ gửi đổi”, có dạng như thể cùng với thẻ SD nhằm khớp các “chân” liên kết bên phía trong cùng với sản phẩm công nghệ với tất cả một khe cắm thẻ mircoSD. Bằng biện pháp làm sao đó thì “cỗ gửi đổi” ấy liên kết được thẻ microSD với vật dụng hình ảnh cùng ta rất có thể tự sướng cùng tàng trữ bình thường (cho tới khi hết dung tích :D).

Bạn đang xem: Adapter pattern là gì


*

*

Memory Card Adapter

Đây là 1 trong những ví dụ trực quan liêu mang đến bộ chuyển đổi — Adapter. Trong thực tiễn ta có nhiều adapter những điều đó. Ví dụ nhỏng sạc điện thoại cảm ứng thông minh cùng với các loại chân sạc, phích cắm 3 chân với ổ gặm 2 lỗ,… với cả không ít trường hợp trong thiết kế. Liên tưởng với ví dụ trên, giả sử ta cải tiến và phát triển một hệ thống cai quản, theo thời hạn khối hệ thống phình lớn, thử khám phá những nhân tố hơn nhưng vẫn giữ được mọi tính năng sẽ bao gồm ở khối hệ thống cũ. Lúc đó ta sẽ giải quyết vụ việc cùng với Adapter Pattern.

Adapter Pattern là gì?

Được biết đến là 1 trong những mẫu mã thi công ứng dụng, Adapter Pattern bên trong nhóm Cấu trúc — Structural Pattern — tương quan cho cấu trúc đến toàn khối hệ thống, tập trung vào các mối quan hệ thân các thực thể, các component, tạo nên chúng thúc đẩy thuận tiện cùng nhau rộng.Adapter Pattern vào vai trò trung gian, cân xứng mang đến hệ thống sẵn có đối ứng cùng với những component bắt đầu nhưng không cần thiết phải sửa đổi code, được cho phép các interface không liên quan mang lại nhau hoàn toàn có thể làm việc cùng nhau.Biểu diễn qua biểu đồ vật UML nhỏng sau:


*

*

Adapter Pattern UML Diagram

Ta có thể thấy nguyên tắc Adapter thao tác, phân tích nó cùng với ví dụ trên để rõ hơn:Ban đầu ta gồm Client là lớp áp dụng đối tượng người dùng đề nghị thay đổi bối cảnh (máy ảnh). Adaptee là phần nhiều lớp nhưng Client cần áp dụng nhưng lại interface hiện thời của chính nó ko cân xứng (thẻ microSD). Adapter (Memory card adapter) vào vai trò trung gian, triển khai biến hóa đồ họa cho Adaptee nhằm cân xứng cùng liên kết được cùng với Client.

Xem thêm: Tải One Key Ghost 2021 Full [email protected], Download Onekey Ghost

Triển khai adapter như vậy nào?

Ta vẫn rõ cách thức thao tác làm việc của nó, vậy làm cho thể như thế nào nhằm tạo ra cỗ đổi khác ấy vào rất nhiều trường phù hợp yêu cầu chúng?Song hành với pattern này ta có 2 khái niệm khác vào lập trình phía đối tượng người sử dụng (OOP) chính là composition với inheritance. Và tương xứng cùng với 2 đặc điểm đó, ta tất cả 2 biện pháp triển khai: Object Adapter và Class Adapter.

Class Adapter — vận dụng inheritance:Từ iPhone 7, Apple đang bỏ đi cổng kết nối tai nghe là jack 3.5mm và chỉ cất giữ một cổng lightning nhằm sạc điện thoại thông minh, cùng núm vào đó là tai nghe airpod. Tuy nhiên ta vẫn rất có thể sử dụng nghe có dây cũ thông qua 1 cab có 1 đầu là cổng 3.5milimet cùng đầu còn sót lại là lightning. Cổng 3.5milimet kế thừa trường đoản cú cổng cũ nhằm tiếp xúc cùng với jaông xã 3.5milimet cùng đôi khi cung cấp bối cảnh tương xứng (lightning) new để liên kết tới iPhone. Và lúc đó tài liệu âm thanh khô truyền qua cab lightning, Gọi về cách tiến hành dấn dữ liệu của cổng 3.5mm, truyền tài liệu mang đến tai nghe.Object Adapter — áp dụng composition:Giả sử phần mềm làm chủ quý khách, ban đầu ta chỉ rước tên rất đầy đủ của chúng ta tuy nhiên sau đây để dễ dàng sắp xếp, ta yêu cầu bóc tách biệt chúng ta cùng tên. Trong thời điểm này vào Adapter, ta mang đến lớp Customer vào nhỏng một trường vào Adapter để tmê mệt chiếu. Cài đặt cho Adapter các cách làm getFirstName(), getLastName() để lấy chúng ta với tên cùng cách làm bóc tách chúng ta và tên. Customer Điện thoại tư vấn ra đối tượng người sử dụng cùng tiến hành thủ tục getName(). Adapter đã làm cho trách nhiệm còn sót lại là tách tên với Gọi ra First name — Last name.Dưới đấy là code ví dụ:Ta gồm interface của Customer:

public interface CustomerInterface void setName(String name); String getName();Triển knhì Customer:

public class Customer implements CustomerInterface private String name;
Override public String getName() return this.name; Interface mới đến Customer, để phân biệt ta Gọi là User

public interface UserInterface void setFirstName(String firstName); void setLastName(String lastName); String getFirstName(); String getLastName();Triển knhì User:

public class User implements UserInterface private String firstName; private String lastName;
Override public void setFirstName(String firstName) this.firstName = firstName;
Override public void setLastName(String lastName) this.lastName = lastName;
Override public String getFirstName() return this.firstName;
Override public String getLastName() return lastName; Xây dựng lớp bắt đầu để thực hiện — Adapter:

public class Adapter implements UserInterface Customer customer; String firstName; String lastName; public Adapter(Customer customer) this.customer = customer; firstName = aceObject.getName().split(“ “)<0>; lastName = aceObject.getName().split(“ “)<1>;
Override public void setFirstName(String firstName) this.firstName = firstName;
Override public void setLastName(String lastName) this.lastName = lastName;
Override public String getFirstName() return firstName;
Override public String getLastName() return lastName; Chạy demo chương trình ta có:

public class Application public static void main(String<> args) Customer customer = new Customer(); customer.setName(“Minh Lee”); Adapter adapter = new Adapter(customer); System.out.println(“User’s first name: “ + adapter.getFirstName()); System.out.println(“User’s last name: “ + adapter.getLastName()); Output ở đây sẽ là:

User’s first name: MinhUser’s last name: LeeLời kếtdo vậy, ta sẽ thấy hình thức cách xử lý của Adapter cùng hồ hết khái niệm tương quan. Adapter áp dụng rộng thoải mái, tương xứng được với mọi trường hợp đề xuất nâng cấp hệ thống cũ, tạo cho hệ thống kết quả rộng thông qua việc có tác dụng cho các component giao tiếp với nhau dễ ợt hơn mặc dù ko liên quan đến nhau.So cùng với những pattern khác trong team Structural, Adapter trầm trồ linc hoạt với hiệu quả, dễ triển khai rộng.Để gọi thêm về Adapter cũng giống như những Pattern không giống, chúng ta có thể bài viết liên quan trong cuốn Design Patterns For Dummies, Gang of Four.