Re: [問題] Adapter

看板C_and_CPP (C/C++)作者 (躂躂..)時間18年前 (2006/07/07 23:25), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ 引述《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
文章代碼(AID): #14hdpECC (C_and_CPP)
文章代碼(AID): #14hdpECC (C_and_CPP)