Re: [問題] Adapter
※ 引述《snaiko ()》之銘言:
: 請問Adapter 功能為何?
據 `那本' Design Pattern 的解釋是..
Convert the interface of a class into another interface clients
expect. Adapter lets classes work together that couldn't otherwise
because of incompatible interfaces.
他說要目地是用來橋接兩個因介面不同而無法互動的類別..
讓他們得以互相合作~
比如說..你的client期望的是 enqueu(v), dequeu()
可是你的 list 只有 insert(i,v), remove(i)
所以你利用一個 queue adapter
實現list所缺少的 enqueu()和dequeu()
那麼你的client就可以把list當queue一樣操作了..
呃..不過..其實應該一開始就會設計好相關的介面..
不然也沒辦法這樣玩..||
像STL的container(stack,queue等)就是用這個概念做的..
template <class T, class Sequence = deque<T> >
class queue {
....
}
兩著的差別舉例如下..
加減看看吧...大略是這個意思 orz
: Class Adapter
用inheritance來作..
以上面的例子...
class Q: list {
dequeue() {return remove(0);}
enqueue(v) {insert(size(), v);}
}
: Object Adapter
用delegation來作..
class Q {
list l;
dequeue() {return l.remove(0);}
enqueue(v) {insert(l.size(), v); }
}
: 兩者之間的差別為何?
: 可否有相關資料可查??
: 查了一下google還是很模糊...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.138.145.34
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章