Bài viết này cần thêm chú thích nguồn gốc để kiểm chứng thông tin. |
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):
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.
/**
* 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 ();
}
}
/**
* 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 ();
}
}