Adapter pattern

Trong công nghệ phần mềm, Adapter pattern(mẫu thiết kế tiếp hợp) là một mẫu thiết kế tiếp hợp cho phép chuyển đổi một interface có sẵn thành một interface khác thích hợp cho lớp đang viết. Một adapter cho phép các lớp làm việc với nhau, mà bình thường là không thể do sự không tương thích về interfaces, bằng cách bao đóng interface của riêng nó cho phù hợp với một lớp có sẵn.

Có hai loại mẫu điều hợp (adapter pattern):

  • Loại Object Adapter pattern - Trong loại mẫu adapter pattern này thì adapter chứa một thể hiện của lớp mà nó bao đóng. Trong tình huống này thì adapter sẽ thực hiện việc gọi hàm đến đối tượng thể hiện được bao đóng đó để thực hiện tác vụ cần thiết.
Mẫu Object Adapter biểu diễn bằng UML. Đối tượng adapter che giấu interface của adaptee khỏi client.
  • Loại Class Adapter pattern - Loại adapter này dùng đa kế thừa để đạt được mục đích này. Đối tượng adapter này được tạo ra bằng cách kế thừa các interfaces từ cả interface mong đợi và interface đã có sẵn. Đối tượng của mẫu Adapter rất hay được dùng ở các ngôn ngữ phổ biến, như Java, không được hỗ trợ đa kế thừa thực vì các nhà thiết kế các ngôn ngữ này cho rằng chúng là những thói quen không tốt.
Mẫu Class Adapter biểu diễn bằng UML.

Mẫu adapter rất hữu ích trong những tình huống khi tồn tại sẵn một lớp cung cấp một số hay toàn bộ dịch vụ mà bạn cần nhưng không có interface mà bạn cần. Một ví dụ tốt trong cuộc sống thực là một adapter chuyển interface của một Document Object Model từ một tài liệu XML thành một cấu trúc cây mà có thể hiển thị. Một liên kết đến một hướng dẫn sử dụng mẫu thiết kế được liệt kê ở bên dưới.

Ví dụ - Class Adaptor1

[sửa | sửa mã nguồn]
 /**
 * Java code sample 
 */
 
 interface Stack
 {
  void push (Object);
  Object pop ();
  Object top ();
 }
 
 /* DoubleLinkedList */
 class DList
 {
  public void insert (DNode pos, Object o) {... }
  public void remove (DNode pos, Object o) {... }
  
  public void insertHead (Object o) {... }
  public void insertTail (Object o) {... }
  
  public Object removeHead () {... }
  public Object removeTail () {... }
  
  public Object getHead () {... }
  public Object getTail () {... }
 }
 
 /* Adapt DList class to Stack interface */
 class DListImpStack extends DList implements Stack
 {
  public void push (Object o) {
 insertTail (o);
  }
  
  public Object pop () {
 return removeTail ();
  }
  
  public Object top () {
 return getTail ();
  }
 }

Ví dụ - Object Adapter

[sửa | sửa mã nguồn]
 /**
 * Java code sample
 */
 
 interface Stack
 {
  void push (Object o);
  Object pop ();
  Object top ();
 }
 
 /* DoubleLinkedList */
 class DList
 {
  public void insert (DNode pos, Object o) {... }
  public void remove (DNode pos, Object o) {... }
  
  public void insertHead (Object o) {... }
  public void insertTail (Object o) {... }
  
  public Object removeHead () {... }
  public Object removeTail () {... }
  
  public Object getHead () {... }
  public Object getTail () {... }
 }
 
 /* Adapt DList class to Stack interface */
 class DListStack implements Stack 
 { 
  private DList _dlist;
  
  public DListStack() { _dlist = new DList(); }
  public void push (Object o) {
 _dlist.insertTail (o);
  }
  
  public Object pop () {
 return _dlist.removeTail ();
  }
  
  public Object top () {
 return _dlist.getTail ();
  }
 }

Tham khảo

[sửa | sửa mã nguồn]

Liên kết ngoài

[sửa | sửa mã nguồn]
Chúng tôi bán
Bài viết liên quan
Người anh trai quốc dân Choso - Chú thuật hồi
Người anh trai quốc dân Choso - Chú thuật hồi
Choso của chú thuật hồi chiến: không theo phe chính diện, không theo phe phản diện, chỉ theo phe em trai
Bạn biết những biện pháp bảo vệ mắt nào?
Bạn biết những biện pháp bảo vệ mắt nào?
Cùng tìm hiểu những biện pháp bảo vệ đôi mắt các bạn nhé
Ore wo Suki nano wa Omae dake ka yo Vietsub
Ore wo Suki nano wa Omae dake ka yo Vietsub
Kisaragi Amatsuyu được Cosmos – 1 senpai xinh ngút trời và Himawari- cô bạn thời thơ ấu của mình rủ đi chơi
Profile và tội của mấy thầy trò Đường Tăng trong Black Myth: Wukong
Profile và tội của mấy thầy trò Đường Tăng trong Black Myth: Wukong
Trong Black Myth: Wukong thì Sa Tăng và Tam Tạng không xuất hiện trong game nhưng cũng hiện diện ở những đoạn animation